Objective c UIViewController viewDidLoad
我有一个新项目,可以使用iOS 5+功能,所以我选择同时使用Objective c UIViewController viewDidLoad,objective-c,ios,uiviewcontroller,ios6,autolayout,Objective C,Ios,Uiviewcontroller,Ios6,Autolayout,我有一个新项目,可以使用iOS 5+功能,所以我选择同时使用AutoLayout和UIViewControllerchildControllers功能 我尝试创建的屏幕很简单: 1.顶部区域有许多“复杂”控件。 2.底部区域是用于可视化结果的tableview 我想要什么 我希望控件区域占据所有必要的位置(即我在Interface Builder中提供的位置)。TableView将根据需要缩小 问题 从XIB加载时,UIViewController.view帧的大小始终为0x568。我应该是0x
AutoLayout
和UIViewControllerchildControllers
功能
我尝试创建的屏幕很简单:
1.顶部区域有许多“复杂”控件。
2.底部区域是用于可视化结果的tableview
我想要什么
我希望控件区域占据所有必要的位置(即我在Interface Builder中提供的位置)。TableView将根据需要缩小
问题
从XIB加载时,UIViewController.view
帧的大小始终为0x568。我应该是0x200(如果200是我在Interface Builder中配置的大小)
工作原理:使用自动布局
我用我所有的元素创建了一个XIB。我在“根视图”上创建了outlet,并创建了outlet和所有视图容器
然后在viewDidLoad方法中添加了容器和配置的约束
-(无效)设置约束
{
NSMutableArray*约束=[NSMutableArray阵列容量:1];
//查看字典。
UIView*topView=self.topView;
UIView*table=self.tableTracks;
NSDictionary*视图=NSDictionaryOfVariableBindings(topView,表);
//查看度量。
NSNumber*topViewHeight=[NSNumber numberWithFloat:self.topView.frame.size.height];
NSDictionary*metrics=NSDictionaryOfVariableBindings(topViewHeight);
//将俯视图固定到容器的上边缘。
[constraints addObjectsFromArray:[NSLayoutConstraints WithVisualFormat:@“V:|[topView(=topViewHeight)][table]|“选项:0度量:度量视图:视图];
//将俯视图边缘固定到容器的两侧。
[constraints-addObjectsFromArray:[NSLayoutConstraints-WithVisualFormat:@“H:|[topView]|”选项:0指标:零视图:视图];
//将桌子边缘固定到容器的两侧。
[constraints-addObjectsFromArray:[NSLayoutConstraints-WithVisualFormat:@“H:|[table]|”选项:0指标:零视图:视图];
[self.view addConstraints:constraints];
}
有了它,我可以使用Interface Builder简单地调整topView
视图的大小,并且TableView
将根据需要调整大小(无压缩阻力,我不在乎是否看不到表)
什么不起作用:使用AutoLayout
和ChildControllers
然后为了简单起见,我选择使用ChildControllers
(执行自定义UIFont设置需要很多插座,太糟糕了,XCode还不能处理它们!)。
我做了以下修改:
HomeTopViewController
的根容器配置为200px高度视图
出口-(void)\u添加ChildViewControllers和SetupConstraints{
//获取所需的度量变量
NSNumber*topViewHeight=[NSNumber numberWithFloat:self.topViewController.view.frame.size.height];
CFShow(self.topViewController.view);
//日志为:
NSLog(@“self.topViewController.view.frame.size.height=%f”,self.topViewController.view.frame.size.height);
//通知控制器添加操作已启动
[self addChildViewController:self.topViewController];
[self-addChildViewController:self.tableViewController];
//将视图添加到视图的层次结构中
self.topViewController.view.Translates自动调整大小GMaskintoConstraints=否;
self.tableViewController.view.translates自动调整大小gmaskintoconstraints=否;
[self.view addSubview:self.topViewController.view];
[self.view addSubview:self.tableViewController.view];
//设置约束
NSMutableArray*约束=[NSMutableArray阵列容量:1];
//视图词典
UIView*topView=self.topViewController.view;
UIView*table=self.tableViewController.view;
NSDictionary*视图=NSDictionaryOfVariableBindings(topView,表);
//查看度量字典
NSDictionary*metrics=NSDictionaryOfVariableBindings(topViewHeight);
//将俯视图固定到容器的上边缘。
[constraints addObjectsFromArray:[NSLayoutConstraints WithVisualFormat:@“V:|[topView(=topViewHeight)][table]|“选项:0度量:度量视图:视图];
//将俯视图边缘固定到容器的两侧。
[constraints-addObjectsFromArray:[NSLayoutConstraints-WithVisualFormat:@“H:|[topView]|”选项:0指标:零视图:视图];
//将桌子边缘固定到容器的两侧。
[constraints-addObjectsFromArray:[NSLayoutConstraints-WithVisualFormat:@“H:|[table]|”选项:0指标:零视图:视图];
//添加约束
[self.view addConstraints:constraints];
//通知控制器添加操作已结束
[self.topViewController didMoveToParentViewController:self];
[self.tableViewController didMoveToParentViewController:self];
}
问题
无论我在HomeTopViewController
行CFShow(self.topViewController.view)中如何调整UIView容器的大小当我期望200px时,code>总是给我帧=(0 0;320 568)
我确实将布局大小配置为“自由形式”或“无”
我想尽量避免的事情
我讨厌在HomeTopViewController
和HomeTableViewController
上创建其他插座,然后将初始帧/高度存储到UIViewController属性中
问题
借调