无法更改UIButton的大小

时间:2013-01-15 07:50:22

标签: ios ios6 uibutton

这看起来很简单,我无法理解为什么会出错。我正在尝试从另一个UIButton处理程序更改touchUpInside的大小。为了重新编写,我在Xcode中创建了一个新的(iOS 6)项目,并将两个按钮拖到默认创建的xib文件中。 touchUpInside的{​​{1}}处理程序如下所示。如果我只包含设置button1 origin.x的语句,我会看到button2按预期移动。但是,设置按钮的button2的语句不起作用。事实上,如果我包含该陈述,原点也不会改变。

我可以在xib设计器中调整按钮的大小,以及我设置的唯一属性(

除外)
size.width

如何成功更改按钮的大小?

谢谢!

5 个答案:

答案 0 :(得分:7)

确定您使用的是AutoLayout,这里发生的事情是iOS AutoLayout机制尝试自动设置您的布局。通过关闭AutoLayout来尝试您的代码。希望你知道如何关闭xcode中的自动布局,如果没有让我知道。

快乐的编码!!!

编辑:

AutoLayout附带iOS 6,这就是为什么你的代码适用于旧版本(iOS 5)的原因。顺便说一下Nick说你可以在xcode中的文件检查器中关闭AutoLayout。

参见附页截图。

enter image description here

答案 1 :(得分:3)

尝试:

CGRect buttonFrame = button.frame;
buttonFrame.size = CGSizeMake(150, 70);
button.frame = buttonFrame;

答案 2 :(得分:0)

使用边界:

[self.button setBounds:CGRectMake(0, 0, 400, 400)];

无论是否启用自动布局,都可以使用!与往常一样,确保您的插座设置正确,以便您可以与按钮通话。

您也可以在自动布局中执行此操作。删除宽度和高度约束并添加新的约束,但如果您的按钮上没有宽度或高度约束(可能是明智的),那么只需设置边界,除非您需要重新定位按钮,它应该只是作为更改按钮边界时,自动布局将自动更新约束。

顺便说一下,除非你用它来手动定位物体,否则你不应该触摸按钮框架。边界用于定尺寸,框架用于定位。

答案 3 :(得分:0)

禁用自动布局可能不是您想要的解决方案。

一种可能性是您之前设置了按钮属性标题,现在只更改标题字体大小将无效。你需要再次setAttributedTitle

答案 4 :(得分:0)

如果您尝试更改var data = { status: "OK", transfers: [{ to: "address11", amount: 0.2 },{ to: "address12", amount: 0.3 }] }; var a = "Transfer Successful! You transferred " + data.transfers.map(t => t.amount + " to " + t.to).join(", "); console.log(a);文本长度,您将受到默认长度的限制,当它太长时,将实现换行(即截断尾部或三个点)。通过以下方式更改默认大小:

UIButton

这适用于大多数情况但不适用于所有 yourButton.setTitle("yourString", for: UIControlState.normal) s