2016-08-24 68 views
2

desc:UICollectionView在容器視圖中

我有一個視圖控制器,它包含7個單元格的集合視圖。當我顯示這個控制器,所有工作正常,它完美地顯示(控制器A)。 在另一個控制器(控制器B)我有一個容器視圖,嵌入控制器A與集合視圖。

問題:

運行的應用程序,並進入控制器B(嵌入控制器A)時,所有的控制器A的子觀點看,除了集合視圖的不錯。在這種情況下,不是看到我的7個細胞,我只看到6個細胞,並且在點擊其中一個細胞之後,最後一個細胞出現在細胞行中,現在它看起來很好(?!)。 它像收集視圖正在重繪,我找不到原因或如何解決它。

任何幫助表示讚賞。

編輯

這是我的流程佈局,這是我從viewDidLoad中稱:

-(void) setFlowLayout { 
    BOOL isIphone = (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad); 
    float baseWidth = [[UIScreen mainScreen] bounds].size.width; 
    int width; 

    width = floor(baseWidth/7.0); 
    float space = baseWidth - (width * 7.0f); 
    space /= 7.0; 

    UICollectionViewFlowLayout * flow = [[UICollectionViewFlowLayout alloc] init]; 

    if(isIphone) { 
     flow.itemSize = CGSizeMake(width, kCellHeight); 
    } 
    else{ 
     flow.itemSize = CGSizeMake(width, kCellSizeIpad); 
    } 

    flow.minimumInteritemSpacing = space; 
    flow.headerReferenceSize = CGSizeMake(_collectionDays.frame.size.width, kSpacing); 
    flow.footerReferenceSize = CGSizeZero; 
    flow.scrollDirection = UICollectionViewScrollDirectionVertical; 

    [_collectionDays setCollectionViewLayout:flow]; 
} 

我也用這個來放置細胞在收集取景當中:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ 
    CGFloat cellSpacing = ((UICollectionViewFlowLayout *) collectionViewLayout).minimumInteritemSpacing; 
    CGFloat cellWidth = ((UICollectionViewFlowLayout *) collectionViewLayout).itemSize.width; 
    NSInteger cellCount = [collectionView numberOfItemsInSection:section]; 
    CGFloat inset = (collectionView.bounds.size.width - (cellCount * (cellWidth + cellSpacing))) * 0.5; 
    inset = MAX(inset, 0.0); 

    return UIEdgeInsetsMake(0.0, inset, 0.0, inset); 
} 

this is the BAD part, not all 7 cells there

thats how it should look like

+0

分享你的源代碼的相關部分 – ddb

+0

分享一些代碼和圖像。 – Sandy

回答

1

所以目前還沒有答案,但我發現我的方式來解決它。 我一直試圖解決它,而且我認爲它與容器大小調整同時被繪製。

我使用調用集合視圖的layoutIfNeeded從其父視圖控制器調用viewDidLayoutSubviews。

所以如果有人遇到它,它的一種修復方法。

很想聽聽更好的方法\解釋。

-(void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 

    [_collectionDays layoutIfNeeded]; 
    [_collectionDays reloadData]; 
} 
相關問題