首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何调整superview的大小以适应具有自动布局的所有子视图?

如何调整superview的大小以适应具有自动布局的所有子视图?
EN

Stack Overflow用户
提问于 2013-08-08 12:39:57
回答 2查看 110.5K关注 0票数 147

我对自动布局的理解是,它采用superview的大小,并根据约束和内部大小计算子视图的位置。

有没有办法逆转这个过程?我想根据约束和内部大小来调整superview的大小。实现这一目标的最简单方法是什么?

我有用Xcode设计的视图,我用它作为UITableView的标题。该视图包含一个标签和一个按钮。标签的大小因数据而异。根据约束,标签会成功地按下按钮,或者如果按钮和superview的底部之间存在约束,则会压缩标签。

我发现了一些类似的问题,但他们没有好的和简单的答案。

EN

回答 2

Stack Overflow用户

发布于 2013-08-08 13:04:23

您可以通过创建约束并通过接口构建器连接它来完成此操作

请参阅说明:Auto_Layout_Constraints_in_Interface_Builder

raywenderlich beginning-auto-layout

AutolayoutPG Articles constraint Fundamentals

@interface ViewController : UIViewController {
    IBOutlet NSLayoutConstraint *leadingSpaceConstraint;
    IBOutlet NSLayoutConstraint *topSpaceConstraint;
}
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leadingSpaceConstraint;

将此约束出口与您的子视图约束连接,或者也连接超级视图约束,并根据您的需求进行设置,如下所示

 self.leadingSpaceConstraint.constant = 10.0;//whatever you want to assign

我希望这能澄清这一点。

票数 3
EN

Stack Overflow用户

发布于 2013-08-08 13:36:21

这可以在较大的subview中的普通UIView上完成,但不能自动在headerViews上工作。headerView的高度由tableView:heightForHeaderInSection:返回的内容决定,因此您必须根据UILabelheight加上UIButton和所需的任何padding的空间来计算UILabel。你需要这样做:

-(CGFloat)tableView:(UITableView *)tableView 
          heightForHeaderInSection:(NSInteger)section {
    NSString *s = self.headeString[indexPath.section];
    CGSize size = [s sizeWithFont:[UIFont systemFontOfSize:17] 
                constrainedToSize:CGSizeMake(281, CGFLOAT_MAX)
                    lineBreakMode:NSLineBreakByWordWrapping];
    return size.height + 60;
}

在这里,headerString是您想要填充UILabel的任何字符串,281数字是UILabelwidth (与Interface Builder中的设置相同)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18118021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档