【问题标题】:Why does UIButton resize when I access titleLabel property?为什么当我访问 titleLabel 属性时 UIButton 会调整大小?
【发布时间】:2014-03-08 03:43:59
【问题描述】:

我正在尝试将按钮的大小调整为(它的固有大小+一点点)以绘制自定义背景。但是,每次我在按钮中访问 self.titleLabel 时,大小和位置都会重新捕捉到故事板的大小和位置。我不需要对标签做任何事情来重现它,只需从按钮中检索它。

我已经在我的按钮和视图控制器上放置了日志代码,以便找到发生这种情况的位置。它不是来自子视图的中继或我在视图控制器中看到的任何其他通知。访问titleLabel之前的行,位置和大小都正确。之后的行,它已经回到故事板位置。注释掉访问可以防止大小/位置对齐。谁能告诉我这是在哪里或为什么会发生?

我没有设置约束(我可以说),但我在这里反对自动布局吗?我应该以不同的方式来执行此操作,例如编写控件或其他方式吗?

之前在 UIButton modifying titlelabel seems to change its frameUIButton titleLabel resizes on press? 上曾提出过类似(或相同?)的问题,但两者都没有得到答复,或者只是用“可能是一个错误”来解释。

【问题讨论】:

    标签: ios iphone objective-c


    【解决方案1】:

    如果项目启用了自动布局,那么是的,您正在与自动布局作斗争。您有两个选择,或者子类 UIButton 以便您可以覆盖内在大小计算,或者修改约束以便在任何约束中不使用内在大小。如果您执行后者,那么您可能希望为宽度约束创建一个 IBOutlet,以便您可以根据需要调整 constant 属性。

    【讨论】:

    • 为约束添加 IBOutlet 是一个巨大的帮助。谢谢!
    【解决方案2】:

    这不是错误,这是自动布局的结果。使用自动布局时,不应设置任何框架。相反,您应该通过修改约束来更改大小或位置。发生的情况是,每当需要重绘视图时,框架都会恢复为由约束定义的框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-31
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多