Ios7 集合视图子视图控制器缺少UINavigatinBar项
通过在初始化子类时添加UICollectionViewController作为子视图控制器,我对UINavigationController进行了子类化:Ios7 集合视图子视图控制器缺少UINavigatinBar项,ios7,uinavigationcontroller,uicollectionview,uinavigationbar,uicollectionviewlayout,Ios7,Uinavigationcontroller,Uicollectionview,Uinavigationbar,Uicollectionviewlayout,通过在初始化子类时添加UICollectionViewController作为子视图控制器,我对UINavigationController进行了子类化: -(id)init{ self = [super init]; if(self){ UICollectionViewController *collectionViewController = [[UICollectionViewController alloc] initWithCollectionView
-(id)init{
self = [super init];
if(self){
UICollectionViewController *collectionViewController = [[UICollectionViewController alloc] initWithCollectionViewLayout:[self getLayout]];
UIBarButtonItem *cancelItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelPressed)];
collectionViewController.navigationItem.rightBarButtonItem = cancelItem;
[self addChildViewController:collectionViewController];
}
return self;
}
要初始化布局,我调用getLayout方法:
- (UICollectionViewFlowLayout *)getLayout {
CGFloat itemWidth = self.view.frame.size.width;
CGSize itemSize = CGSizeMake(itemWidth, itemWidth);
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setItemSize:itemSize];
return flowLayout;
}
但是,当我使用此代码时,iOS 7应用程序不会显示任何导航栏项iOS 8仍然有效。但是,如果我更改行:
CGFloat itemWidth = self.view.frame.size.width;
到
一切都很好。两行返回相同的值。知道为什么会发生这种情况吗?尝试在viewDidLoad方法中添加视图。很可能是在加载控制器的视图之前配置控制器。这没有什么区别。我使用屏幕大小没有问题,我只是想知道为什么它会有不同。
CGFloat itemWidth = [[UIScreen mainScreen] bounds].size.width;