【问题标题】:Changing size of UIButton while using Autolayout?使用自动布局时更改 UIButton 的大小?
【发布时间】:2013-04-30 14:48:30
【问题描述】:

我对 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' 是我添加的)

【问题讨论】:

    标签: ios uiview uibutton xib autolayout


    【解决方案1】:
    1. 在自动布局下,视图在 viewDidLoad 处没有框架。在viewWillAppear: 或viewDidLayoutSubviews 中尝试您的代码。
    2. 在自动布局下,您不设置框架。您改为编辑约束。设置框架将一直有效,直到下一次布局通过,那时您的布局将恢复到您的约束所描述的布局。
    3. 要调整按钮的大小以适应子视图,您可以尝试以下操作(使用可视格式语言):|-[theView]-|,但这取决于您的 xib 中的约束条件。

    【讨论】:

    • 感谢您的信息,非常有用的建议!我尝试使用viewDidLayoutSubviews,它按预期工作。
    猜你喜欢
    • 1970-01-01
    • 2017-10-18
    • 2016-06-04
    • 2013-10-25
    • 2013-06-09
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多