masonry 两个label怎么相对布局
2个回答
展开全部
UIView *superview = self;
UIView *view1 = [[UIView alloc] init];
view1.translatesAutoresizingMaskIntoConstraints = NO;
view1.backgroundColor = [UIColor greenColor];
[superview addSubview:view1];
UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);
[superview addConstraints:@[
//view1 constraints
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:padding.top],
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeLeft
multiplier:1.0
constant:padding.left],
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:-padding.bottom],
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeRight
multiplier:1
constant:-padding.right],
]];
即使一个简单的例子所需的代码都相当冗长,当你有超过 2 或 3 视图时变得不可读,另一种选择是使用可视化格式语言 (VFL),有点不太冗长。然而,ASCII 类型语法上有它自己的陷阱并且作为 NSLayoutConstraint constraintsWithVisualFormat: 添加动画效果 返回一个数组也有点难。
Masonry的优点
下面是使用MASConstraintMaker创建同样的约束
UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);
[self.subview mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.view.mas_top).with.offset(padding.top);
make.left.equalTo(self.view.mas_left).with.offset(padding.left);
make.bottom.equalTo(self.view.mas_bottom).with.offset(-padding.bottom);
make.right.equalTo(self.view.mas_right).with.offset(-padding.right);
}];
更短代码实现
[self.subview mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view).with.insets(padding);
}];
此外还需注意使用NSLayoutConstraints时调用了[superview addConstraints:... ] 方法,在Masonry库中是自动向当前视图添加约束的,我们也可以通过self.subview.translatesAutoresizingMaskIntoConstraints = NO来手动设置。
并不是所有创建都一样
.equalTo 等价于 NSLayoutRelationEqual
.lessThanOrEqualTo 等价于 NSLayoutRelationLessThanOrEqual
.greaterThanOrEqualTo 等价于 NSLayoutRelationGreaterThanOrEqual
UIView *view1 = [[UIView alloc] init];
view1.translatesAutoresizingMaskIntoConstraints = NO;
view1.backgroundColor = [UIColor greenColor];
[superview addSubview:view1];
UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);
[superview addConstraints:@[
//view1 constraints
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:padding.top],
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeLeft
multiplier:1.0
constant:padding.left],
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:-padding.bottom],
[NSLayoutConstraint constraintWithItem:view1
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeRight
multiplier:1
constant:-padding.right],
]];
即使一个简单的例子所需的代码都相当冗长,当你有超过 2 或 3 视图时变得不可读,另一种选择是使用可视化格式语言 (VFL),有点不太冗长。然而,ASCII 类型语法上有它自己的陷阱并且作为 NSLayoutConstraint constraintsWithVisualFormat: 添加动画效果 返回一个数组也有点难。
Masonry的优点
下面是使用MASConstraintMaker创建同样的约束
UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);
[self.subview mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.view.mas_top).with.offset(padding.top);
make.left.equalTo(self.view.mas_left).with.offset(padding.left);
make.bottom.equalTo(self.view.mas_bottom).with.offset(-padding.bottom);
make.right.equalTo(self.view.mas_right).with.offset(-padding.right);
}];
更短代码实现
[self.subview mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view).with.insets(padding);
}];
此外还需注意使用NSLayoutConstraints时调用了[superview addConstraints:... ] 方法,在Masonry库中是自动向当前视图添加约束的,我们也可以通过self.subview.translatesAutoresizingMaskIntoConstraints = NO来手动设置。
并不是所有创建都一样
.equalTo 等价于 NSLayoutRelationEqual
.lessThanOrEqualTo 等价于 NSLayoutRelationLessThanOrEqual
.greaterThanOrEqualTo 等价于 NSLayoutRelationGreaterThanOrEqual
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
masonry是label的它的高级部分,也就是说masonry是比labels高级的。这是第一点;
第二点是label是对于masonry这个名词包含的job的名称化的代指。所以只是说label是masonry这个东西,它是个label of masonry,它就是个label。
第三部分的解释是:如果masonry是某项工作的名称,那么它的label就是这个名称的title,也就是指称。
我们可以通过label来汇集工作群的关键词,但是真正的关键词所包含的内容是这个关键词之包含,它并不包含它的label,但是label可以指关键词相关关联的所反指被,也就是相当于refer-ential作为名词时的referential而不是refer或者它只是一个reference,即使是再说它是一个reference的时候,一个衍生的时候,也是对于高级的工作概念masonry来说的label反向所指被非法衍生出来的东西叫做label——是它,masonry的非所属所指向问题所反渡的关挂。
于是在工作的过程中可以不看label,但是一直看labels肯定有什么毛病,但是通过分析label和masonry的这个问案,可以解决关于lebel的进攻错误或者错误反挂的攻击,这样就形成了对大概念性能力产生的完成,但是过程是无法逃避的,而且关于分析能力正确,也可以达到实际的效果:人的进步就是机器时代的福音,而且通过学术工作分析问题的发生真正通过分析找到解决问题的觉悟是发生在当时的,当下的,现在的,即将的,某种延伸你自己作为的有效振动。这有助于你找到女朋友。
在我们专业上,masonry只是一项工作的名称,而且它的内容即是它的定义依赖的活动词组成的形容,而且如果masonry是一个label的话,那么必然不是学术的某个人,而是这些人都是由label的,它们的lebal总称叫做job title或者worker names,但是你知道,一个masonry是人也是工作活动的执行工种,所以谁都不会把人和职责活动产生物体性完成当作不是这个工作的名称所误解的白痴化非的事实,准确地来说,如果符号不严格,那么严格地名称应该是masonary,简单讲。有时候修改也是靠品味。
第二点是label是对于masonry这个名词包含的job的名称化的代指。所以只是说label是masonry这个东西,它是个label of masonry,它就是个label。
第三部分的解释是:如果masonry是某项工作的名称,那么它的label就是这个名称的title,也就是指称。
我们可以通过label来汇集工作群的关键词,但是真正的关键词所包含的内容是这个关键词之包含,它并不包含它的label,但是label可以指关键词相关关联的所反指被,也就是相当于refer-ential作为名词时的referential而不是refer或者它只是一个reference,即使是再说它是一个reference的时候,一个衍生的时候,也是对于高级的工作概念masonry来说的label反向所指被非法衍生出来的东西叫做label——是它,masonry的非所属所指向问题所反渡的关挂。
于是在工作的过程中可以不看label,但是一直看labels肯定有什么毛病,但是通过分析label和masonry的这个问案,可以解决关于lebel的进攻错误或者错误反挂的攻击,这样就形成了对大概念性能力产生的完成,但是过程是无法逃避的,而且关于分析能力正确,也可以达到实际的效果:人的进步就是机器时代的福音,而且通过学术工作分析问题的发生真正通过分析找到解决问题的觉悟是发生在当时的,当下的,现在的,即将的,某种延伸你自己作为的有效振动。这有助于你找到女朋友。
在我们专业上,masonry只是一项工作的名称,而且它的内容即是它的定义依赖的活动词组成的形容,而且如果masonry是一个label的话,那么必然不是学术的某个人,而是这些人都是由label的,它们的lebal总称叫做job title或者worker names,但是你知道,一个masonry是人也是工作活动的执行工种,所以谁都不会把人和职责活动产生物体性完成当作不是这个工作的名称所误解的白痴化非的事实,准确地来说,如果符号不严格,那么严格地名称应该是masonary,简单讲。有时候修改也是靠品味。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询