English 中文(简体)
替换 辅助实例
原标题:replaceSublayer example

我有以下的法典,我似乎无法做到这一点。

第一,我提出一种观点。

UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
[view.layer insertSublayer:gradient atIndex:0];

其次,我需要取代这一层。 我尝试了以下几个方面,但失败是因为我不知道如何进入这一层。 页: 1 此时此刻,我参加了该方案的不同部分,因此我不能仅打电话gradient。 我需要从view中摘取。

[view.layer replaceSublayer:0 with:newgradient];

表面上看,0本应是Old levels,但我不知道如何进入。

感谢。

最佳回答

我认为,你应该能够利用:

[view.layer replaceSublayer:[[view.layer sublayers] objectAtIndex:0]
            with:newGradient];

我远离我的X条码开发环境,现在可以测试。

问题回答

Keep a pointer to the gradient layer. If you have alot of them do it with an array. If you still don t want to do that you can always use this to get an array of all the layers..

[self.layer sublayers];

然后,你可以通过并检查一些参数,看它们是否相同。 如同确定层。 在你创建时,名字指什么。

职能如下:

#define MyGradientLayerName @"MyGradient"

void makeViewGradient(UIView *pView,BOOL bRemoveBackground,CGColorRef clr1,CGColorRef clr2)
{
    CAGradientLayer *gradient = [CAGradientLayer layer];
    gradient.name = MyGradientLayerName;

    gradient.frame = pView.bounds;
    gradient.colors = [NSArray arrayWithObjects:(id)clr1,(id)clr2,nil];

    CALayer *pGradientLayer = nil;
    NSArray *ar = pView.layer.sublayers;
    for (CALayer *pLayer in ar)
    {
        if ([pLayer.name isEqualToString:MyGradientLayerName])
        {
            pGradientLayer = pLayer;
            break;
        }
    }
    if (!pGradientLayer) [pView.layer insertSublayer:gradient atIndex:0];
    else [pView.layer replaceSublayer:pGradientLayer with:gradient];

    if (bRemoveBackground) pView.backgroundColor = nil;//free memory !
}




相关问题
Code sign Error

I have created a new iPhone application.I have two mach machines. I have created the certificate for running application in iPhone in one mac. Can I use the other mac for running the application in ...

ABPersonViewController Usage for displaying contact

Created a View based Project and added a contact to the AddressBook using ABAddressBookRef,ABRecordRef now i wanted to display the added contact ABPersonViewController is the method but how to use in ...

将音频Clips从Peter改为服务器

我不禁要问,那里是否有任何实例表明从Peit向服务器发送音响。 I m不关心电话或SIP风格的解决办法,只是一个简单的袖珍流程......

• 如何将搜查线重新定位?

我正试图把图像放在搜索条左边。 但是,问题始于这里,搜索条线不能重新布署。

热门标签