我在Xcode 5的界面构建器中编写了一个UI。我的目标是iOS 6和iOS 7。
我有一个UINavigationController,它包含一个带有UIToolBar和UITableView的UIViewController。
为了阻止我的TableView被导航栏部分覆盖,我添加了设计时间限制,并将顶部垂直约束附加到视图。我把它设置为'占位符'。
然后,在viewDidLoad中,我添加了一个新的附加到iOS 7上的topLayoutGuide和iOS 6上的视图:
+(void)addTopConstraint:(id)topControl forController:(UIViewController *) controller withMargin:(NSInteger)margin
{
NSMutableDictionary *views = [[NSMutableDictionary alloc] init];
NSString *constraint;
[views setObject:topControl forKey:@"ControlOne"];
if( [controller respondsToSelector:@selector(topLayoutGuide)] )
{
[views setObject:[controller topLayoutGuide] forKey:@"topLayoutGuide"];
constraint = [NSString stringWithFormat:@"V:[topLayoutGuide]-%d-[ControlOne]", margin];
}
else constraint = [NSString stringWithFormat:@"V:|-%d-[ControlOne]", margin];
[[controller view] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:constraint options:0 metrics:nil views:views]];
}
在界面构建器中,我在TableView上方有Toolbar对象时,它工作正常。如果我将TableView移动到ToolBar上方,它找不到顶部布局指南,我在视图顶部得到一个空的44点间隙。
界面构建器左侧控件的顺序是否有任何意义? (我正在谈论“占位符”下方的控制列表,其中视图位于控件和约束之下。
有什么想法吗?!?