• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - awakeFromNib 与 drawRect 中的 CALayer

[复制链接]
菜鸟教程小白 发表于 2022-12-13 07:13:37 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我很困惑,为什么下面的代码我加到awakeFromNib或者initWithFrame:里面可以用,但是我加到drawRect: 还是直接调用?

self.layer.cornerRadius = CGRectGetWidth(self.bounds) / 2.0f;
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowRadius = 3;
self.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
self.layer.shadowOpacity = 0.75f;

对于以编程方式创建的按钮,我应该将此方法添加到哪里?按钮可能只使用 init 创建,然后通过约束更改大小。

规范:通过工作,我的意思是按钮将是圆形的(如果纵横比为 1:1,则为圆形)并带有阴影。不工作,我的意思是它仍然是一个正方形。



Best Answer-推荐答案


查看the Apple Docs中的详细说明,但本质上是因为您在绘制周期的中间设置图层配置(cornerRadius、阴影等),而您应该在绘制周期开始之前完成此设置。

来自 drawRect: 文档:

By the time this method is called, UIKit has configured the drawing environment appropriately for your view and you can simply call whatever drawing methods and functions you need to render your content.

其他函数,如 awakeFromNib:initWithFrame: 在绘制周期之前发生,这意味着您的配置将在它们呈现在屏幕上之前被考虑在内。相比之下,drawRect: 假设这些基本配置已设置好,并且仅用于渲染您在屏幕上指定的内容。

关于ios - awakeFromNib 与 drawRect 中的 CALayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30259342/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap