【问题标题】:Autolayout detect when UIView got the frame自动布局检测 UIView 何时获得框架
【发布时间】:2015-04-12 12:40:15
【问题描述】:

我有 UIView 具有自动布局约束。我用框架CGRectZero 创建它。所以我不知道实际尺寸。这将取决于superview。

但我想知道我的视图何时获得可用于计算的框架。

【问题讨论】:

    标签: ios ios7 autolayout ios-autolayout


    【解决方案1】:

    因此,您实际上不需要了解有关框架的任何信息。虽然如果你确实需要知道,你可以在你的视图中实现-layoutSubviews,或者在视图控制器级别实现-viewDidLayoutSubviews

    在此处调用super 后,应将框架设置为 AutoLayout 解析的内容。

    以下帖子中的第 7 条也是值得采纳的好习惯:Forget frame

    我还强烈建议您阅读有关自动布局过程here

    【讨论】:

    • 好的,我有一个包含另一个视图 B 的视图 A。视图 B 有图像。一切都基于自动布局。然后似乎我需要 subcalsing UIView B 来执行 -layouts 子视图?因为我对属于视图 B 的图像感兴趣。我需要通过 CALayer 将顶角半径添加到图像视图。
    • 如果你需要做的只是为你的图像视图添加一个圆角半径,那么你不需要担心帧,只需在视图 A 的 awakeFromNib 或它的 initWithFrame: 中执行此操作。如果您有一个完整的故事板设置并且您的视图都不是自定义 UIView 子类,那么您只需将视图 B 的出口添加到视图控制器并在 viewDidLoad 内部设置角半径。
    • 如果你忘记了帧,你将如何处理图层变化?处理CGRect 值,不一定直接连接到视图的时候呢?
    • 通常您可能不需要知道框架,但在我的情况下,我有一个模板图像,我想为其设置背景颜色,并想计算半径以便将其掩盖为圆形在圆形图像的后面。因此,我需要知道图像视图的框架和硬编码感觉很脏。但是,layoutSubviews 似乎对我不起作用。 (它在一个 UITableViewCell 子类中,imageview 是一个圆形的附属视图)
    猜你喜欢
    • 2016-07-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2018-02-24
    相关资源
    最近更新 更多