在iOS 9中,如果对页面使用UIViewController以外的类,如何创建约束以避免碰撞状态栏和/或选项卡栏?
所有指南都建议调整顶部布局指南,以避免重击状态栏。但是,如果使用UIViewController以外的视图控制器创建页面(例如,如果使用UITableViewController创建页面,因为页面主要是表视图),则该页面没有布局指南。我怎么才能避免状态栏呢?我发现UITableViewController麻烦太多了,就像这个家伙: 现在,当我实现一个表视图时,我发现将表视图作为UIViewController的属性更容易,然后将委托和数据源职责设置为UIViewController。从那里你可以定制你想要的任何东西。您可以使用故事板选项,如状态栏设置(推断、无、黑色等),但根据我的经验,我发现将UITableView放在UIViewController中效果最好 示例标题:在iOS 9中,如果对页面使用UIViewController以外的类,如何创建约束以避免碰撞状态栏和/或选项卡栏?,ios,ios9,statusbar,Ios,Ios9,Statusbar,所有指南都建议调整顶部布局指南,以避免重击状态栏。但是,如果使用UIViewController以外的视图控制器创建页面(例如,如果使用UITableViewController创建页面,因为页面主要是表视图),则该页面没有布局指南。我怎么才能避免状态栏呢?我发现UITableViewController麻烦太多了,就像这个家伙: 现在,当我实现一个表视图时,我发现将表视图作为UIViewController的属性更容易,然后将委托和数据源职责设置为UIViewController。从那里你可以
@interface MyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITableView *myTableView;
另一个没有导航控制器和状态栏问题的UITableViewController示例:一个
UITableViewController
(和所有其他标准视图控制器)继承自UIViewController
,因此它们具有UIViewController
的所有属性和方法,包括顶部和底部布局参考线,您完全可以使用。由于UITableViewController继承自UIViewController,因此在Tableviewcontroller中,您可以覆盖此方法
- (UIStatusBarStyle)preferredStatusBarStyle {
if(<#condition>)
{
return UIStatusBarStyleLightContent;
}
else
{
return UIStatusBarStyleDefault;
}
}
-(UIStatusBarStyle)首选状态BarStyle{
if()
{
返回UIStatusBarStyleLightContent;
}
其他的
{
返回UIStatusBarStyleDefault;
}
}
如果必须使用UITableViewController,可以将其嵌入带有嵌入序列的UIViewController中,并在UIViewController中执行任何操作状态栏发生了什么变化?如果视图与它重叠,那么它“被撞倒”是什么意思?您可以将UITableViewController嵌入UINavigationController中。请参阅此部分,如何使UITableViewController的顶部和底部布局指南显示在XCode界面设计器中?据我所知,在Interface Builder中,不能向表视图控制器添加任何视图,这些视图不是表视图页眉或页脚、单元格或单元格内容视图的子视图,因此,为这些内容的顶部布局指南添加约束没有多大意义。如果您对状态栏下的表视图的内容有问题,它并不真的喜欢不嵌入导航控制器…谢谢。令人恼火的是,Interface Builder允许您设置不受支持且不会警告您的组合。
@synthesize myTableView;
//**** Table View Delegate and Data Source ****//
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *myCellIdentifier = @"myCell";
MyTableViewCell *cell = (MyTableViewCell *)[myTableView dequeueReusableCellWithIdentifier:myCellIdentifier];
//Customize the cell
return cell;
}
-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
return [myDataSource count];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//perform some action on click
}