我正在使用iOS 7.0+
与Size Classes
合作开发AutoLayout
项目,并使用由UIView
支持的xib
子类1}}同名文件。
我想要做的是我正在以编程方式从UIView
实例化xib
并将其从故事板添加到ViewController
。此ViewController
已AutoLayout
启动并运行,但我添加的UIView
并不尊重ViewController
的框架。
我实例化我的UIView
子类,如下所示:
tabBarView = [[SHDTabBarView alloc] initWithFrame:CGRectMake(0, self.view.height-50, self.view.width, 50)];
[self.view addSubview:tabBarView];
在子类中,我使用了一个名为UIView
的{{1}} IBOutlet
来设置实例化代码,如下所示:
container
这是我的 -(id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self == nil) return nil;
[self initalizeSubviews];
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if (self == nil) return nil;
[self initalizeSubviews];
return self;
}
-(void)initalizeSubviews{
NSString *nibName = NSStringFromClass([self class]);
UINib *nib = [UINib nibWithNibName:nibName bundle:nil];
[nib instantiateWithOwner:self options:nil];
//Add the view loaded from the nib into self.
[self addSubview:self.container];
}
在界面生成器中的样子(注意画布的宽度是320像素):
这就是它在iPhone 6上的外观(注意它是如何从右侧切断的):
我尝试使用多种解决方案,包括使用开源解决方案PureLayout在代码中完成所有操作,使用手动约束设置等。
我的研究结果似乎都不合适。理想情况下,我想在xib
中设置所有内容,然后只需将视图添加到Interface Builder
的超级视图中,并使ViewController
发挥其魔力。
我该如何处理这项任务?任何建议都非常受欢迎。