由xib支持的UIView子类,其中包含错误的框架

时间:2015-05-11 10:48:34

标签: cocoa-touch uiview autolayout interface-builder size-classes

我正在使用iOS 7.0+Size Classes合作开发AutoLayout项目,并使用由UIView支持的xib子类1}}同名文件。

我想要做的是我正在以编程方式从UIView实例化xib并将其从故事板添加到ViewController。此ViewControllerAutoLayout启动并运行,但我添加的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像素):

enter image description here

这就是它在iPhone 6上的外观(注意它是如何从右侧切断的):

enter image description here

我尝试使用多种解决方案,包括使用开源解决方案PureLayout在代码中完成所有操作,使用手动约束设置等。

我的研究结果似乎都不合适。理想情况下,我想在xib中设置所有内容,然后只需将视图添加到Interface Builder的超级视图中,并使ViewController发挥其魔力。

我该如何处理这项任务?任何建议都非常受欢迎。

0 个答案:

没有答案