【问题标题】:CALayer changes not shown up when written inside initWithCoder在 initWithCoder 中写入时未显示 CALayer 更改
【发布时间】:2014-04-05 16:55:29
【问题描述】:

我正在尝试在位于 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;
}

【问题讨论】:

  • 该层在 initWithCoder 中是否已经可用?我认为你必须在呈现到屏幕时进行操作......
  • 您说“我确实想在单元格本身的类中进行更改”,但随后您接受了一个需要将代码放入视图控制器的答案,而不是满足您要求的答案.
  • 你是对的蒂莫西,对不起(改变它)。我对此仍然很陌生,并且在我对其进行了一些编辑后,我投票支持了另一个响应(没有考虑到更改可能不会发生的事实)。 Tnx 提示和答案:-)

标签: ios objective-c xcode uitableview calayer


【解决方案1】:

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

如果添加断点并查看self.bubbleMore,它将是initWithCode 函数中的nil

【讨论】:

    【解决方案2】:

    将代码移至awakeWithNibinitWithCoder 中的插座尚未连接。来自Apple's documentation

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多