0

我对ios很陌生。我正在开发一个项目,该项目将在整个应用程序中频繁使用某个 UIView 类。这个类只是一个用背景颜色做一些透明度的图像。到目前为止,这工作正常。此类有时作为单独的 UIView 存在,有时作为按钮子视图存在。

当我将此 UIView 作为子视图添加到 UIButton 时,UIView 的全部内容以全尺寸显示,但按钮的可点击区域保持在 xib 中定义的大小,除非关闭使用自动布局(即使我手动尝试设置按钮的框架。)

我想在 xib 上放置一个 UIButton 作为占位符,然后根据初始化 UIView 的覆盖图像的大小定义其大小/可点击区域。

这应该是可能的,还是我误解了 xib 文件/自动布局的使用?

在 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”是我添加的)

4

1 回答 1

6
  1. 在自动布局下,视图在viewDidLoad. viewWillAppear:在or中尝试您的代码viewDidLayoutSubviews
  2. 在自动布局下,您不设置框架。您改为编辑约束。设置框架将一直有效,直到下一次布局通过时,您的布局将恢复到您的约束所描述的布局。
  3. 要调整按钮的大小以适应子视图,您可以尝试这样的事情(以视觉格式语言):|-[theView]-|但这取决于您的 xib 中存在哪些约束。
于 2013-05-06T19:47:50.213 回答