【问题标题】:What is the ideal place to set edge insets of UIButton when its subview of a UITableViewCell or subview of Any other View当 UITableViewCell 的子视图或任何其他视图的子视图时,设置 UIButton 边缘插图的理想位置是什么
【发布时间】:2018-10-16 22:44:29
【问题描述】:

我有一个场景,我需要为添加到 UITableViewCell 的 UIButton 更改 UIEdgeInsets,我在 layoutSubviews 中设置了它,但这被调用了很多次,它也适用于 init,但我不确定这是否真的是一个地方因为那只会调用一次。

override func layoutSubviews() {
        super.layoutSubviews()
        if imageView != nil {
            titleEdgeInsets = UIEdgeInsets(top: 52, left: -10, bottom: 0, right:-10)
        }
    }

谁能告诉我哪一个是理想的地方,为什么?

【问题讨论】:

    标签: ios swift uibutton layoutsubviews


    【解决方案1】:

    如果您使用xib,请使用awakeFromNib()

    它会调用一次,并且从文档到awakeFromNib()

    通常,您为需要在设计时无法完成的额外设置的对象实施 awakeFromNib。例如,您可以使用此方法自定义任何控件的默认配置,以匹配用户首选项或其他控件中的值。您还可以使用它来将各个控件恢复到应用程序的某个先前状态。

    或者,如果您不使用 xib,只需使用 init,因为它调用了一次。

    【讨论】:

      【解决方案2】:

      awakeFromNib 将在从 xib 或情节提要加载新单元格时调用 ,但不是在重新使用单元格时。 但是在 awakeFromNib 期间不会出现框架布局。 UIEdgeInsets 不会受到框架的影响,所以我更喜欢在 awakeFromNib 而不是 in 布局子视图

      layoutSubviews您将获得正确的框架,因此仅用于需要正确框架(如角半径)的时尚

      【讨论】:

      • 所以你的意思是 UIEdgeInsets 永远不会改变,即使超级和本端视图框架发生变化,因为这个按钮只在需要时显示并且在图像下方有标题?我担心这是因为大多数人建议在 layoutSubview 中设置这个,就像这里 stackoverflow.com/questions/4201959/…,我的按钮是子类并以编程方式添加。
      • UIEdgeInsets 不受 Button 框架的影响,它只是从框架中插入该框架是什么
      猜你喜欢
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多