我有四个标签项目(小计,税金,小费和促销),其设计如下。
每个项目相互连接。换句话说,每个标签都使用顶部空间约束。
Promotion
和Tip
是可选的。如果用户想要添加,那么他可以。因此,我还在初始状态为每个标签项“Height == 0
添加了约束。如果添加了其中任何一个,则我将Height
更改为25
以使其可见。
但是,您可以查看是否没有tip
,那么promotion
位置很奇怪。
我期望在税收下看到促销,而不是看到额外的空白。
我想知道开发人员通常如何处理这个问题?
添加提示后
答案 0 :(得分:1)
原因是因为提示标签的top
和bottom
在未隐藏时具有相同的空间,并通过将其设置为height = 0
来隐藏它,它仍然具有top
和bottom
约束构成了巨大的空间。您将top
的{{1}}约束设置为Tip Label
和/或如上所述使用0
,如果隐藏了一个项目,则会自动调整间距。
答案 1 :(得分:1)
更新Height
标签的Tip
约束时。同时更新top vertical space
标签的Promotion
。
设置Promotion
标签top vertical space = 0.0
示例:
@interface ViewController () {
__weak IBOutlet NSLayoutConstraint *tipLabelHeight;
__weak IBOutlet NSLayoutConstraint *promotionLabelTopVerticalSpace;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
tipLabelHeight.constant = 0.0;
promotionLabelTopVerticalSpace.constant = 0.0;
[self.view layoutIfNeeded];
}
根据您的需要更改代码。
答案 2 :(得分:1)
当您通过将标签的高度设置为0来隐藏标签时,顶部和底部空间仍然存在。因此,当您尝试通过将标签的高度设置为0来隐藏标签时,您也应该删除该标签的顶部间距。在这种情况下,您应将“提示”标签的顶部空间设置为0,并将高度设置为0.因此,“促销”标签将取代“提示”标签
答案 3 :(得分:0)
您可以使用UIStackView而不是手动操作约束,堆栈视图自动管理它们,非常适合添加和删除以线性方式布局的子视图。
答案 4 :(得分:0)
认为这是因为这种显示应该在表格中完成。 然后该表将相应地分配间距。