使用Autolayout时改变UIButton的大小?

我对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]; } 

但是,当我尝试调用setFrame之前和之后打印按钮信息时,框架保持相同的大小。

(注意’_theView.getSize’是我添加的)

  1. 在Autolayout下,视图在viewDidLoad没有框架。 在viewWillAppear:viewDidLayoutSubviews尝试您的代码。
  2. 在Autolayout下,您不设置框架。 您可以编辑约束。 设置框架将一直有效,直到下一个布局通过,此时布局将恢复为约束所描述的布局。
  3. 要调整按钮的大小以适合子视图,您可以尝试这样的(使用可视格式语言): |-[theView]-| 但它取决于你的xib有什么约束。