我以编程方式创建了一个UIView并添加了NSLayoutConstraint,它工作,然后将其添加为视图控制器的视图的子视图。现在我需要从超级视图中删除此视图,并在一段时间后再次添加它。但是如果使用self.view addSubview
再次添加它,布局将不再起作用。如何使布局再次运作?UIView addSubview自动布局不起作用
4
A
回答
3
你需要照顾一些点,而添加从自动布局中删除视图。
有在UIView.h
类两种方法可供
// Allows you to perform layout before the drawing cycle happens.
// -layoutIfNeeded forces layout early
- (void)setNeedsLayout;
- (void)layoutIfNeeded;
使用这些方法按您的要求。所以我建议你什么时候从视图中删除子视图,如果需要的话,更新高级视图的约束。然后调用下面的方法来反映布局变化。
[self.view layoutIfNeeded];
上面的大多数情况将解决所有布局相关的问题。但是,如果复杂的结构有一段时间,我的意思是运行时改变视图的行为。
然后在您的UIViewController
中覆盖以下方法,在此方法中执行所有与帧相关的更改。
- (void)viewDidLayoutSubviews
0
当你创建的约束将其分配给变量
@property (nonatomic, strong)NSLayoutConstraint *viewConstraintTop;
self.viewConstraintTop = [Your Constraint];
当你想从上海华删除它删除限制
[self.viewConstraintTop autoRemove];
删除您的看法,并再次同时增加分配约束为
self.viewConstraintTop = [Your Constraint];
16
问题是副视点不继承原始视图的尺寸/帧,并在那里补充说,如果它被卡在任何+任意大小的600×600的视图。我的解决方案是设置原始视图的框架,然后让iOS完成剩余的工作。
[self.myOtherView setFrame:self.view.frame]; //Replace frame size with already resized view
[self.myOtherView setNeedsLayout]; //Tell iOS to autolayout the new sub view
[self.addSubView:self.myOtherView]; //Add it
相关问题
- 1. 的UITextView - addSubview - 自动布局
- 2. addSubview不起作用
- 3. 自动布局方向不起作用
- 4. 自动布局约束不起作用
- 5. addSubview不起作用
- 6. addSubview不起作用
- 7. 使用自动布局使UIView全屏
- 8. 使用自动布局重置UIView帧
- 9. UIView的拥抱使用自动布局
- 10. 自定义布局AlertDialog不起作用?
- 11. 自动布局不工作?
- 12. 布局滚动不起作用
- 13. UIView动画不起作用
- 14. addSubView()和bringSubViewToFront()在viewDidLoad()不起作用
- 15. 自定义UIView - 自动布局不适用
- 16. 具有自动布局的动态uiview布局
- 17. jgraph布局不起作用
- 18. 布局不起作用onTouch()
- 19. Laravel布局不起作用
- 20. adwhirl布局不起作用
- 21. UILabel不在UIView内部设置动画,使用自动布局
- 22. 自定义UIView在addSubview上不可见
- 23. 约束uitableview和uiview自动布局
- 24. iOS自动布局UIView绘图循环
- 25. 多UIView的自动布局问题
- 26. iPhone布局不使用自动布局
- 27. UITableViewCell自动布局宽度不与UIBezierPath一起使用
- 28. 带自动布局的多行UILabel不起作用
- 29. 为什么自动布局限制不起作用?
- 30. 更新约束值在自动布局中不起作用
您需要重新添加约束。当您删除子视图时,该视图的任何约束都会丢失。 – rdelmar 2014-10-31 04:24:49