iphone - 将 CALayer 添加到 UIView 并能够在方向更改时重绘

标签 iphone ios uitableview uiview core-graphics

我有一个分配给 UITableVieCell 的 backgroundView 的 UIView 子类。在我的 UIView 子类中,我在 initWithFrame: 方法中添加了 2 个 CALayers。

在方向改变时,单元格的高度改变,我需要重新调整我的 CALayers 的位置;基本上重绘。

由于 CALayers 是在 initWithFrame: 方法中添加的,所以我无法通过调用 setNeedsDisplay 来重绘它们。

我刚开始使用 CALayers,不知道什么是正确的方法。我如何添加我的 CALayer,让它们在方向改变/或任何可能改变尺寸的事件时重新绘制?

最佳答案

实际上,更简单的方法是使用 KVO 来观察 View 层的 bounds 属性的变化。

[self.layer addObserver:self forKeyPath:@"bounds" options:0 context:nil];

然后在您的 -observeValueForKeyPath:ofObject:change:context: 方法中执行您需要的任何操作。

完成后不要忘记removeObserver:self

关于iphone - 将 CALayer 添加到 UIView 并能够在方向更改时重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10147118/

相关文章:

ios - 使用 TableView 继续

ios - 如何在导航 Controller 中移动表格 View

iphone - 如何遍历相机胶卷中存储的所有视频?

ios - iOS App 中如何知道 Debug 或 Release?

ios - 通过 UICollectionView 的高度设置 UITableViewCell 的高度

ios - 如何为自定义 UITableView 标题部分 Nib 添加分隔线?

ios - 我无法发送 handlePan : to my UIScrollView?

javascript - 在 UIWebView 中打开的 HTML 页面中自动填充用户名和密码

ios - 如何在 CoreBluetooth Swift 中获取 kCBAdvDataManufacturerData?

ios - 从应用程序访问 iPhone 闹钟?