由 Masonry 初始化后在 UIScrollView 中附加 UIView
Posted
技术标签:
【中文标题】由 Masonry 初始化后在 UIScrollView 中附加 UIView【英文标题】:Append UIView in UIScrollView after init by Masonry 【发布时间】:2016-05-12 08:14:52 【问题描述】:我使用关于 UIScrollView 的演示,并且我想在 UIScrollView 初始化之后附加一个 UIView 一个 UIView,例如:我单击一个按钮,而不是在 UIScrollView 底部有一个新的 UIView .所以我这样写代码:
- (void)clickButton
UIView *new = [[UIView alloc]init];
new.backgroundColor = [UIColor blueColor];
new.mas_key = @"newView";
[self.scrollView.contentView addSubview:new];
[new mas_makeConstraints:^(MASConstraintMaker *make)
make.top.equalTo(self.scrollView.lastBottom);
make.left.equalTo(@0);
make.right.equalTo(self.scrollView.contentView.mas_right);
make.height.equalTo(@50);
];
self.scrollView.lastBottom = new.mas_bottom;
[self.scrollView.contentView mas_updateConstraints:^(MASConstraintMaker *make)
make.bottom.equalTo(self.scrollView.lastBottom);
];
但是还是有类似的错误
MASLayoutConstraint:0x7f97f431b360 UIView:content.bottom == UIView:newView.bottom
MASLayoutConstraint:0x7f97f4341400 UIView:newView.top == UIView:newView.bottom
MASLayoutConstraint:0x7f97f4341bb0 UIView:newView.height == 50
MASLayoutConstraint:0x7f97f4315390 UIView:content.bottom == UIView:newView.bottom
Will attempt to recover by breaking constraint
MASLayoutConstraint:0x7f97f4341bb0 UIView:newView.height == 50
表示更新后我的约束没有更新,如何解决?
【问题讨论】:
【参考方案1】:我认为您的视图框架为零。您需要设置要查看的位置和大小,并且您的约束应该是这样的。
滚动视图:顶部、底部、前导、尾随
滚动视图中的视图(内容视图):顶部、底部、前导、尾随、容器中的水平中心和固定高度
以及您在容器视图中的视图(新):顶部、底部、前导、尾随或根据要求
希望这会有所帮助:)
【讨论】:
我使用 Masonry(一个关于 Autolayout 的框架),如果我删除self.scrollView.lastBottom = new.mas_bottom;
,就会出现新 UIView 的块。但我不能移动到新的 UIView【参考方案2】:
我解决了问题。robertjpayne 在 Github 上回复我的问题。Link here
【讨论】:
以上是关于由 Masonry 初始化后在 UIScrollView 中附加 UIView的主要内容,如果未能解决你的问题,请参考以下文章