当我点击它时,我改变了NSButton的大小。但是当我调整窗口大小时,它的大小会恢复为默认值。我意识到这是因为自动布局选项。
所以,问题是,如果启用了自动布局选项,我是否无法永久更改控件的位置或大小?
答案 0 :(得分:0)
宣布出口:
@property(nonatomic,weak) IBOutlet NSLayoutConstraint *buttonWidthConstraint;
转到NIB。选择您的按钮并固定它的宽度(编辑器 - 引脚 - 宽度)。这会将宽度约束添加到按钮约束中。将新创建的约束连接到上面的插座。
按钮点击事件:
- (IBAction)buttonDidClick:(id)sender
{
[self.buttonWidthConstraint setConstant:300]; // set new width
}
upd:这背后的想法是自动布局引擎每次需要时都会覆盖视图帧,因此[view setFrame:]等手动更改不适用。因此,更改布局的某些属性的唯一方法是在布局级别上工作。布局约束只是一个公式:
item1.attr1 {== | <= | >=} multiplier * {item2.attr2 | none} + constant
在您的情况下,此约束与MyButton.width = 1 * (none) + 70
一样简单,其中70是Xcode建议的原始宽度。