我该如何用Swift改变按钮的高度?

5
根据屏幕的高度,我希望能够调整视图中按钮的高度。在Swift中,最简单的方法是什么?
我尝试了以下方式和使用CGRectMake(),但是没有任何变化:
self.myButton.frame.size.height = self.myButton.frame.size.height*scrOpt

我该如何“更新”框架?


self.myButton.frame = CGRectMake(self.myButton.frame.origin.x, self.myButton.frame.origin.y, self.myButton.frame..size.width, self.myButton.frame.size.height*scrOpt) - Chirag D jinjuwadiya
2
如果您正在使用自动布局,您需要更新其高度约束;否则,请更新其框架。 - Yogesh Suthar
请查看此处的解释 http://stackoverflow.com/a/16406097/790842。正如@YogeshSuthar所说,您必须使用AutoLayout,在AutoLayout中更改框架不起作用,您需要处理约束。 - iphonic
2个回答

6
你看不到任何变化的原因可能是你正在使用AutoLayout,并且该按钮有一些约束条件,你需要更改高度约束条件才能实现你想要的效果。
编辑:在Swift中直接更改框架属性似乎是可能的,但在Objective C中不可能。

2
frame 不是只读属性,在 Swift 中你可以给 self.myButton.frame.size.height 赋值... - Martin R
1
是的,这似乎是个问题 - 我使用了自动布局(通常效果很好),现在尝试在代码中更改这个愚蠢的按钮...嗯... :-/ 谢谢! - Cuno
你说得对,马丁。我已经习惯了Objective C的写法。我修改了我的回答。 - pteofil

0

如果您正在使用自动布局,则需要更新其高度约束,否则请更新其框架。

NSLog(@"%@",NSStringFromCGRect(self.myButton.frame));

    NSLog(@"%f",scrOpt);

    self.myButton.frame = CGRectMake(self.myButton.frame.origin.x, self.myButton.frame.origin.y, self.myButton.frame.size.width, self.myButton.frame.size.height*scrOpt)

    NSLog(@"%@",NSStringFromCGRect(self.myButton.frame));

编辑检查一下,看看打印出来是什么:NSLog


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接