Where do you set a subviewamp;#39;s layer properties? Why not in the initWithCoder(在哪里设置子视图的层属性?为什么不在initWithCoder中)
问题描述
我创建了一个自定义UITableViewCell
(在本例中,假设子类是MyViewCell
),它有一个关联的NIB文件MyViewCell.xib
。笔尖包含一个UITableViewCell
和一个子视图UIView
(名为cardContainer
),它只是一个蓝色背景的矩形。我想在UIView
周围添加一个投影,所以我在-initWithCoder
调用中添加了set层属性:
@implementation MyViewCell
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self initView];
}
return self;
}
- (void) initView
{
UIBezier Path*shadowPath =[UIBezierPath bezierPathWithRect:view.bounds];
[self.cardContainer.layer setShadowColor: [UIColor blackColor].CGColor];
[self.cardContainer.layer setShadowOpacity: 0.8];
[self.cardContainer.layer setShadowRadius:3.0];
[self.cardContainer.layer setShadowOffset: CGSizeMake(2.0,2.0)];
view.layer.shadowPath = shadowPath.CGPath;
}
@end
我遇到的问题是没有绘制这些层属性。如果我在awakeFromNib
或drawRect
内调用-initView
调用,它将按预期绘制。我的问题是:为什么我的原始代码不起作用?我应该往哪里打电话initView
?是否存在某个视图生命周期?我知道initWithCoder
没有连接插座,但它在运行时没有崩溃。
我通读了Apple documentation around Views,并搜索了SO问题,但没有找到答案。我找到了这个SO answer,但再次无法解释。
推荐答案
嘿,我找到了一个更好的方法,只需为子视图添加一些运行时属性cardContainer
像这样
.m文件中不再有代码。
编辑:
发件人:NSNibAwaking Protocol
重要提示:由于无法保证从存档实例化对象的顺序,因此您的初始化方法不应向层次结构中的其他对象发送消息。可以从wakeFromNib内部安全地将消息发送到其他对象-到那时,可以确保所有对象都未存档和初始化(当然,不一定被唤醒)。
这篇关于在哪里设置子视图的层属性?为什么不在initWithCoder中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在哪里设置子视图的层属性?为什么不在initWithCoder中


基础教程推荐
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01