我有一个带有背景图片和标题标题的viewcontroller。这种观点在大多数时候都是一样的。我有不同的子视图,我将在这个viewcontroller中显示和隐藏。
我如何使用故事板实现这一目标?
或者还有其他优雅的解决方案吗?
感谢。
答案 0 :(得分:7)
答案 1 :(得分:2)
如果使用container views.
为您的所有子视图添加container view
。
为您的主properties
中的所有子container views
创建View Controller
。
在容器view controller
中设计子视图。
在主view controlle
r中应用业务逻辑以相应地显示和隐藏子视图。
答案 2 :(得分:1)
通常,您不需要为每个子视图创建单独的xib(从技术上讲,我们可以在同一个故事板上绘制所有视图控制器)。
使用隐藏和显示问题,将子视图设为IBOutlet,然后让您的代码决定应显示哪个视图以及应隐藏哪个视图。
答案 3 :(得分:1)
添加和删除子视图而不是隐藏和显示会更好。
在同一个ViewController
中,您可以使用addSubView:
添加removeFromSuperView
来删除视图
答案 4 :(得分:0)
添加和删除子视图是实现此目的的最佳方式。但如果你使用故事板进行此操作,所有重叠的视图可能看起来很混乱并且很难管理。
实现此目标的最佳方法是以编程方式添加视图,并以编程方式设置布局约束。
UIView *subView = [[UIView alloc]init];
subView.backgroundColor = [UIColor blackColor];
NSDictionary *viewsDictionary = @{@"subView":subView};
NSDictionary *metrics = @{@"offset":@20};
NSArray *heightConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-offset-[subView]-offset-|"
options:0
metrics:metrics
views:viewsDictionary];
NSArray *widthConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-offset-[subView]-offset-|"
options:0
metrics:metrics
views:viewsDictionary];
[self.view addConstraints:heightConstraint];
[self.view addConstraints:widthConstraint];
上面的代码例如将添加子视图,其中top,bottom,leading和trailing space设置为20,从视图控制器的主视图。