在initWithCoder中编写时,CALayer更改未显示

时间:2014-03-04 08:59:37

标签: ios objective-c xcode uitableview calayer

我正在尝试在位于uitableviewcell内的UIButton上做一些CALayer的东西。 我已导入但CALayer操作不起作用。 当我将它移动到cellForRowAtIndexPath方法时,它工作正常。 我确实希望在单元格本身的类中进行一次更改,而不是在表创建表中进行更改。 你有什么想法吗?

顺便说一下,我确实在init上看到了NSLog文本(所以我知道它进入了块)。

谢谢!

- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
        NSLog(@"STARTED coder init in testResultCell");
        [[self.bubbleMore layer] setMasksToBounds:YES];
        [[self.bubbleMore layer] setBorderWidth:3.0f];
        [[self.bubbleMore layer] setBorderColor:[UIColor blueColor].CGColor];
        [[self.bubbleMore layer] setCornerRadius:20.0f];
    }
    return self;
}

2 个答案:

答案 0 :(得分:2)

将代码移至awakeWithNib。您的商店尚未在initWithCoder中关联。来自Apple's documentation

  

当一个对象收到一个awakeFromNib消息时,它保证设置所有的插座实例变量。

答案 1 :(得分:1)

在调用viewDidLoad之前,用户界面对象不可用,实际上会从xibStoryboard加载控件。请将您的代码移至viewDidLoad,它应该可以正常工作。

如果您添加断点并查看self.bubbleMore,则nil函数中将为initWithCode