我知道以前有人问过这个问题,但我似乎无法使任何解决方案起作用。我的按钮设置了 AutoLayout,但为了让它们适合 iPhone 4,我需要让它们更短。
我有这个,我在 viewDidLoad、viewDidAppear 和 viewDidLayoutSubviews 中尝试过(我真的不在乎它在哪里,只要它有效)
for button in choiceButtons! {
if smallScreen {
button.frame = CGRect(x: button.frame.origin.x, y: button.frame.origin.y, width: button.frame.width, height: 15)
println("small")
} else {
button.frame = CGRect(x: button.frame.origin.x, y: button.frame.origin.y, width: button.frame.width, height: 55)
button.frame.size.height = 55 //second attempt (what I'd really like to work)
print("big")
}
}
Run Code Online (Sandbox Code Playgroud)
打印语句正确执行,所以我知道这是有效的。我已经检查了所有四个按钮的“在构建时删除占位符”选项。我已经尝试完全从 AutoLayout 中的按钮中删除高度约束(这无关紧要,我只是想防止 XCode 对我大喊大叫)。如果没有其他选择,完全以编程方式创建所有四个按钮似乎很乏味但可行,但我觉得我想做的事情应该不会太难。对于它的价值,如果我将完全相同的代码应用于图像,它就可以工作。只是不是我的按钮。
我对ios很新.我正在开发一个项目,它经常在整个应用程序中使用某个UIView类.这个类只是一个用背景颜色做一些透明度的图像.这到目前为止工作正常.这个类有时作为单独的UIView存在,有时作为按钮子视图存在.
当我将这个UIVut添加到UIButton作为子视图时,UIView的全部内容以完整大小显示,但按钮的可点击区域保持xib中定义的大小,除非关闭Use Autolayout(即使我手动尝试)设置按钮的框架.)
我想在xib上放置一个UIButton作为占位符,然后根据初始化的UIView的叠加图像的大小定义其大小/可点击区域.
这应该是可能的,还是我误解了xib文件/ autolayout的用法?
在ViewDidLoad下我有......
- (void)viewDidLoad{
[theButton addSubview:_theView];
CGRect buttonFrame = theButton.frame;
buttonFrame.size = CGSizeMake(_theView.getSize.width,_theView.getSize.height);
[theButton setFrame:buttonFrame];
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试调用setFrame之前和之后打印按钮信息时,框架保持相同的大小.
(注意'_theView.getSize'是我添加的)