Swift:在运行时以编程方式更改按钮的大小

Swift: Programmatically change size of a button in runtime

我在相机应用程序中使用两个按钮来跟踪所述相机的变焦。如果选择 2x,我的目标是减小 1x 的高度和宽度,反之亦然,但它似乎不起作用。

我试过 button.frame.size.height = 8 button.frame.size.width = 8 并且高度和宽度始终保持不变。我什至尝试了 500 次,看看它是否会有所作为,但没有。 我也试了button.size(CGFloat)没用...

我应该提一下,这些按钮嵌套在 StackView 中,并且该应用程序构建在故事板上。此外,该应用程序设计用于 iOS 13+。

提前致谢!

UIStackView 正在使用自动布局来安排其子视图。因此,直接修改按钮的框架将没有效果,因为自动布局无论如何都会根据下一个布局过程中的活动约束重新计算所有框架。

由于您使用的是故事板,因此解决方法如下:

  1. 打开情节提要,select 您的按钮并为其创建宽度和高度约束。
  2. 为视图控制器中的每个约束创建 IBOutlet。为了示例,假设您将其命名为 buttonWidthConstraintbuttonHeightConstraint.
  3. 每当您想更改按钮的大小时,请执行以下操作:
buttonWidthConstraint.constant = 8
buttonHeightConstraint.constant = 8