【问题标题】:What is the CALayer equivalent to UIView's sizeToFit-method?什么是相当于 UIView 的 sizeToFit 方法的 CALayer?
【发布时间】:2023-03-15 00:30:01
【问题描述】:

我正在寻找一种方法,让 CALayer 在其子层发生变化时调整自身大小(这意味着当任何子层的边界发生变化或子层数组本身发生变化时)。

当我之前使用视图时,我通过在我的自定义 UIView 子类中实现 sizeThatFits 来管理它,只要视图的子视图发生更改,sizeToFit 就会自动调用该子类。

由于 CALayer 有 sizeThatFits-equivalent-method preferredSize,我很惊讶没有找到 sizeToFit-equivalent。

【问题讨论】:

  • 我认为这是关于 sizeThatFits,而不是 sizeToFit,因为他想知道层的大小应该是多少。我能够计算该大小(通过preferredSize),但我需要一个在子视图更改时调用的方法(然后调用preferredSize 并相应地设置图层的框架)。
  • 为什么不直接使用 UIView 呢?
  • CALayer 似乎更适合,我不需要触摸处理,我得到隐式动画,我不必费心转发发送给它的触摸。此外,layer-version 应该会快一些。

标签: uiview resize calayer sizetofit


【解决方案1】:

我认为您需要实现(覆盖)- (void)layoutSublayers ... *子类可以覆盖这个 * 提供自己的布局算法,应该设置框架 * 每个子层

- (void)layoutSublayers
{
 // self.frame = aNewSubLayer.bounds
// basically do algorithm for setting frame and bounds for this(self) layer and subLayers here
}

【讨论】:

    猜你喜欢
    • 2016-12-21
    • 2010-11-13
    • 2011-12-11
    • 1970-01-01
    • 2019-02-01
    • 2011-09-04
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多