我在IB中设计了自定义Cell,将其子类化并将我的插座连接到我的自定义类.我在单元格内容中有三个子视图:UIView(cdView)和两个标签(titleLabel和emailLabel).根据每行可用的数据,有时我想在我的单元格中显示UIView和两个标签,有时只有两个标签.我想要做的是设置约束,如果我将UIView属性设置为隐藏或我将从superview中删除它,两个标签将移动到左侧.我尝试将UIView前导约束设置为10px的Superview(单元格内容)和UILabels将10 px的约束引导到下一个视图(UIView).稍后在我的代码中
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(IndexPath *)indexPath {
...
Record *record = [self.records objectAtIndex:indexPath.row];
if ([record.imageURL is equalToString:@""]) {
cell.cdView.hidden = YES;
}
Run Code Online (Sandbox Code Playgroud)
我隐藏了我的cell.cdView,我希望标签向左移动,但是它们在Cell中保持相同的位置.我试图从superview中删除cell.cdView,但它也没有用.我附上图片来澄清我的意思.
我知道如何以编程方式执行此操作,而我不是在寻找解决方案.我想要的是在IB中设置约束,并且如果删除或隐藏其他视图,我希望我的子视图将动态移动.是否可以在具有自动布局的IB中执行此操作?
.....
Run Code Online (Sandbox Code Playgroud) 我正在为iOS开发一个应用程序,我正在使用带有AutoLayout ON的Storyboard.我的一个视图控制器有一组4个按钮,在某些情况下我想让第一个按钮消失.
如果我使用该setHidden:TRUE
方法,UIButton变得不可见,但它仍然显然在视图中占用空间,结果是一个"洞",我无法填充,使剩余的UIButton浮动到主视图的顶部.
在Android中,我会简单地使用View.GONE
而不是View.INVISIBLE
,但在iOS中我坚持这种行为,我不想相信唯一的解决方案是手动(是的,我的意思是以编程方式)将剩余的元素移动到顶部.
我以为我能够设置某种约束来使一切像Android一样自动,但我没有运气.
在我关闭Autolayout之前,有人能指出我正确的方向吗?
我正在使用IB,但我对程序化的东西也很满意.
更新:
将组件高度设置为0也没有用.
我试过这样的事情:
UIButton *b;
CGRect frameRect = b.frame;
frameRect.size.height = 0;
b.frame = frameRect;
Run Code Online (Sandbox Code Playgroud)