Ios7 在UIViewController中使用UITableViewController进行编程自动布局
对于我的简单问题,我遇到了所有的自动布局问题: 我在UINavigationController中显示了UIViewController。该UIViewController中有一个UITableViewController。代码如下: FirstViewController:Ios7 在UIViewController中使用UITableViewController进行编程自动布局,ios7,autolayout,nslayoutconstraint,Ios7,Autolayout,Nslayoutconstraint,对于我的简单问题,我遇到了所有的自动布局问题: 我在UINavigationController中显示了UIViewController。该UIViewController中有一个UITableViewController。代码如下: FirstViewController: - (void)viewDidLoad { [super viewDidLoad]; UIView *contentView = [UIView new]; contentView.translat
- (void)viewDidLoad
{
[super viewDidLoad];
UIView *contentView = [UIView new];
contentView.translatesAutoresizingMaskIntoConstraints = NO;
self.view = contentView;
[self.view setBackgroundColor:[UIColor redColor]];
firstTable=[[FirstTableViewController alloc] initWithStyle:UITableViewStylePlain];
[self.view addSubview:firstTable.tableView];
}
现在,当我运行时,我得到FirstViewController和tableViewController(其中没有位置代码)顶部之间的间隙
因此,使用viewDidLayoutSubviews方法,我尝试了各种约束
-(void) viewDidLayoutSubviews
{
[firstTable.tableView layoutIfNeeded];
//[firstTable.tableView pinEdge:NSLayoutAttributeTop toEdge:NSLayoutAttributeTop ofView:self.view inset:0.0];
// CRASHES
[firstTable.tableView addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:0.0]];
// CRASHES: A constraint cannot be made that sets a location equal to a constant. Location attributes must be specified in pairs'
}
我试过上面几种不同的方法
我只想将tableView的顶部与ViewController的视图相匹配。设置帧的问题是,我遇到了全屏视图(视频播放器)将此间隔向后推的问题
如何匹配此tableViewController的顶部以消除此间隙?以编程方式,请不要使用iOS 7自动布局功能的IB
解决方案
洛德·高堆叠大师@jrturton爵士为我指出了一个我正在考虑的方向,总的来说,上面的结构就是问题所在。我将尝试他的一般指针,但我认为这是一个结构性问题,并将委托和数据源功能移出原始VC,并将其引入UITababVIEW控制器,这就是它被用作的原因。p>
viewDidLoad
中设置self.view
。。。古怪的调用该方法时,self.view已设置李>
self.view=[UIView new]代码>在loadView
中李>
如果要添加子视图控制器,请确保将其添加为子视图控制器,而不仅仅是添加视图
如果要使用自动布局布局子视图控制器,则需要在子视图控制器的视图上将translatesAutoResizengMackintoConstraints
设置为NO
李>
viewdilayoutsubviews
不是创建约束的好地方。添加子视图时应添加固定约束,因此您可能应该在loadView
中执行所有操作-遵循上述建议后,只需将表格视图固定到顶部、左侧和右侧边缘即可(如果它不能一直向下,请设置一个高度,否则也要固定到底部,但如果这样做,我不知道为什么它是子视图控制器)
谢谢,伙计,我不知道你在3中的意思。你的意思是只是实例化VC还是VC添加了那个视图?我有点脱离了上面的一般结构,因为原始VC的视图功能被删除了,所以我只是在NavigationController中显示UITableViewController。在3中,我的意思是你必须调用addChildViewController
以及添加子视图
,以便正确传递旋转和其他事件。