【问题标题】:Swift: Programmatically change size of a button in runtimeSwift:在运行时以编程方式更改按钮的大小
【发布时间】:2021-09-03 20:31:25
【问题描述】:

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

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

我应该提一下,这些按钮嵌套在 StackView 中,并且应用程序是基于 Storyboard 构建的。此外,该应用程序旨在用于 iOS 13+。

提前致谢!

【问题讨论】:

  • 你在使用自动布局吗?如果是这样,您需要保留对约束的引用,然后更改它们

标签: ios swift xcode swift5


【解决方案1】:

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

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

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

【讨论】:

  • 我不确定如何标记它,但这是正确的答案。非常感谢!
  • @jayb98,很高兴它有帮助!要将答案标记为已接受,您只需单击一个大复选标记。这篇帮助文章更详细地解释了它:stackoverflow.com/help/someone-answers
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多