如何使用自动布局创建三个视图,其中一个固定宽度的高度和其他两个固定高度的高度

妈妈

我试图垂直创建一个视图设置,其中UIView顶部有一个(固定宽度,高度),UILabel底部有两个s(固定宽度,动态高度)。视图(aView)周围的填充为5。周围的_mylabel填充为5。leftright填充_yourLable为5._yourLable将根据文本而增长,但是当文本内容太大时,它将停止增长以维持从Superview的填充的5。

这是我尝试过的:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIView *superview = self.view;

    UIView *aView = [UIView new];
    [aView setBackgroundColor:[UIColor blackColor]];
    [aView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.view addSubview:aView];

    _mylabel = [[UILabel alloc]init];
    [_mylabel setNumberOfLines:0];
    [_mylabel setBackgroundColor:[UIColor redColor]];
    [_mylabel setTranslatesAutoresizingMaskIntoConstraints:NO];
    _mylabel.text = @"i am trying to create a view setup vertically where i have one UIView(fix width, height) at top and other two UILables(fix width, dynamic height) at bottom respectively. Padding on allaround of view/lables is 5. this is what i have tried:";
    [self.view addSubview:_mylabel];

    _yourLable = [[UILabel alloc]init];
    [_yourLable setNumberOfLines:0];
    [_yourLable setBackgroundColor:[UIColor redColor]];
    [_yourLable setTranslatesAutoresizingMaskIntoConstraints:NO];
    _yourLable.text = @"i am trying to create a view setup vertically where i have one UIView(fix width, height) at top and other two UILables(fix width, dynamic height) at bottom respectively. Padding on allaround of view/lables is 5. this is what i have tried:";
    [self.view addSubview:_yourLable];

    NSDictionary * views = NSDictionaryOfVariableBindings(aView,_mylabel, _yourLable, superview);

    NSArray * heightConstraintforLabel = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-5-[aView(==200)]-5-[_mylabel]-5-[_yourLable]-5-|" options:0 metrics:nil views:views];
    NSArray * widthConstraintforView = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[aView]-5-|" options:0 metrics:nil views:views];

    NSArray * widthConstraintformylabel = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[_mylabel]-5-|" options:0 metrics:nil views:views];

    NSArray * widthConstraintforyourLable = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[_yourLable]-5-|" options:0 metrics:nil views:views];

    [superview addConstraints:heightConstraintforLabel];
    [superview addConstraints:widthConstraintforView];

    [superview addConstraints:widthConstraintformylabel];

    [superview addConstraints:widthConstraintforyourLable];
}

-(void)viewWillLayoutSubviews{
    [super viewWillLayoutSubviews];
    // Your layout logic here

    CGFloat availableLabelWidth = _mylabel.frame.size.width;
    _mylabel.preferredMaxLayoutWidth = availableLabelWidth;

    availableLabelWidth = _yourLable.frame.size.width;
    _yourLable.preferredMaxLayoutWidth = availableLabelWidth;
}

这是我得到的,没有警告:

这就是输出的样子

我希望两个标签都根据确切的文本高度来调整大小。我希望最后一个红色标签按照其中写入的文本增长,但不要超过5的底部空间。也就是说,它应该增长但应保持5的底部填充。

我已经尝试过将垂直内容压缩用于标签的各种组合...,但没有确切的解决方案。

帮助 :)

邦操作员

万一您没有设置优先级,请使用

[_mylabel setContentCompressionResistancePriority:751 forAxis:UILayoutConstraintAxisVertical];
[_mylabel setContentHuggingPriority:252 forAxis:UILayoutConstraintAxisVertical];

您无需为设置任何优先级_yourLable

并且您不需要preferredMaxLayoutWidth为中的任何标签设置viewWillLayoutSubviews,因此您无需覆盖viewWillLayoutSubviews您可以注释整个方法。

在iOS 7和iOS 9设备上进行了验证。

模拟器屏幕截图如下所示:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何以动态单元格高度和自动布局以编程方式创建一个非常基本的UITableView?

来自分类Dev

如何以动态单元格高度和自动布局以编程方式创建一个非常基本的UITableView?

来自分类Dev

创建三个div,以使顶部和底部具有固定的高度,而中间一个具有动态高度?

来自分类Dev

在固定容器中的两个单行流体div,其中一个扩展

来自分类Dev

高度相同的两个视图相邻

来自分类Dev

CSS 3列-前两个固定宽度,第三个剩余宽度

来自分类Dev

两个DIVS,一个流体,一个固定的,固定的div(不考虑高度)在内部具有垂直居中的元素

来自分类Dev

flexbox一个元素固定高度,其他填充

来自分类Dev

在一个JFrame中并排放置两个JPanel,其中一个JPanel具有固定宽度

来自分类Dev

三列布局,左右两个浮点,一个固定宽度的中心

来自分类Dev

使用自动布局约束以编程方式创建四个具有相同高度和宽度的UIView

来自分类Dev

如何联接三个表,其中一个表与其他两个表的ID不匹配?

来自分类Dev

Android的两个布局在侧面具有固定宽度,而一个布局在中间具有流动宽度

来自分类Dev

自动布局:具有可变高度和两个标签的表格单元

来自分类Dev

具有两个col的引导程序,其中一个具有固定宽度

来自分类Dev

两个带有JFrame的按钮(具有固定的宽度/高度和固定的位置)

来自分类Dev

在一个JFrame中并排放置两个JPanel,其中一个JPanel具有固定的宽度

来自分类Dev

具有上一个/下一个按钮的固定宽度和高度的文本容器

来自分类Dev

使用自动布局约束以编程方式创建四个具有相同高度和宽度的UIView

来自分类Dev

在滚动视图中具有相同宽度和高度的三个UIButton上的自动布局

来自分类Dev

如何使用一个固定高度的顶部div和一个剩余高度的中间div创建一个垂直的flexbox?

来自分类Dev

自动布局-当一个视图具有动态高度时,将两个视图在UITableViewCell中垂直居中

来自分类Dev

基于三个表创建视图,其中三个表以列为其中一个表中的行

来自分类Dev

如何使用自动布局调整固定宽度和高度的UIImageView的大小

来自分类Dev

具有两个col的引导程序,其中一个具有固定宽度

来自分类Dev

使用Bootstrap创建一个包含图像的div,该图像具有固定的高度

来自分类Dev

自动布局显示按钮不固定高度和宽度的圆形

来自分类Dev

父 div,有两个孩子,其中有确切的高度,如何给另一个孩子“自由左”空间作为高度

来自分类Dev

两个元素相互叠加,其父元素的高度调整为其中较大的一个

Related 相关文章

  1. 1

    如何以动态单元格高度和自动布局以编程方式创建一个非常基本的UITableView?

  2. 2

    如何以动态单元格高度和自动布局以编程方式创建一个非常基本的UITableView?

  3. 3

    创建三个div,以使顶部和底部具有固定的高度,而中间一个具有动态高度?

  4. 4

    在固定容器中的两个单行流体div,其中一个扩展

  5. 5

    高度相同的两个视图相邻

  6. 6

    CSS 3列-前两个固定宽度,第三个剩余宽度

  7. 7

    两个DIVS,一个流体,一个固定的,固定的div(不考虑高度)在内部具有垂直居中的元素

  8. 8

    flexbox一个元素固定高度,其他填充

  9. 9

    在一个JFrame中并排放置两个JPanel,其中一个JPanel具有固定宽度

  10. 10

    三列布局,左右两个浮点,一个固定宽度的中心

  11. 11

    使用自动布局约束以编程方式创建四个具有相同高度和宽度的UIView

  12. 12

    如何联接三个表,其中一个表与其他两个表的ID不匹配?

  13. 13

    Android的两个布局在侧面具有固定宽度,而一个布局在中间具有流动宽度

  14. 14

    自动布局:具有可变高度和两个标签的表格单元

  15. 15

    具有两个col的引导程序,其中一个具有固定宽度

  16. 16

    两个带有JFrame的按钮(具有固定的宽度/高度和固定的位置)

  17. 17

    在一个JFrame中并排放置两个JPanel,其中一个JPanel具有固定的宽度

  18. 18

    具有上一个/下一个按钮的固定宽度和高度的文本容器

  19. 19

    使用自动布局约束以编程方式创建四个具有相同高度和宽度的UIView

  20. 20

    在滚动视图中具有相同宽度和高度的三个UIButton上的自动布局

  21. 21

    如何使用一个固定高度的顶部div和一个剩余高度的中间div创建一个垂直的flexbox?

  22. 22

    自动布局-当一个视图具有动态高度时,将两个视图在UITableViewCell中垂直居中

  23. 23

    基于三个表创建视图,其中三个表以列为其中一个表中的行

  24. 24

    如何使用自动布局调整固定宽度和高度的UIImageView的大小

  25. 25

    具有两个col的引导程序,其中一个具有固定宽度

  26. 26

    使用Bootstrap创建一个包含图像的div,该图像具有固定的高度

  27. 27

    自动布局显示按钮不固定高度和宽度的圆形

  28. 28

    父 div,有两个孩子,其中有确切的高度,如何给另一个孩子“自由左”空间作为高度

  29. 29

    两个元素相互叠加,其父元素的高度调整为其中较大的一个

热门标签

归档