一直嘗試使用UICollectionView
對齊我的單元格並啓用分頁功能。不幸的是,當嘗試這樣做時,我永遠無法讓細胞在中心對齊。當我滾動收集時,細胞總是稍微偏離。我試圖爲縱向和橫向視圖做到這一點。香港專業教育學院使用的插圖被嘗試和中心的細胞和它們的位置:啓用分頁功能的UICollectionView Center單元格
- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
CGFloat cellSpacing = ((UICollectionViewFlowLayout *) collectionViewLayout).minimumLineSpacing;
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);
if(UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)){
return UIEdgeInsetsMake(50.0,inset,0.0,inset); // top, left, bottom, right
}
else{
return UIEdgeInsetsMake(50.0,inset,0.0,inset); // top, left, bottom, right
}
}
我再變線間距:
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)
collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
CGFloat cellSpacing = ((UICollectionViewFlowLayout *) collectionViewLayout).minimumLineSpacing;
CGFloat cellWidth = ((UICollectionViewFlowLayout *) collectionViewLayout).itemSize.width;
NSInteger cellCount = [collectionView numberOfItemsInSection:section];
CGFloat inset = (collectionView.bounds.size.width - ((cellCount-1) * (cellWidth + cellSpacing))) * 0.5;
inset = MAX(inset, 0.0);
if(UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)){
NSLog(@"Changed to landscape Spacing");
return inset;
}
else{
return inset;
}
我的細胞的大小都在這裏設置:
-(CGSize)
collectionView:(UICollectionView *) collectionView
layout:(UICollectionViewLayout*)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
//Set Landscape size of cells
if(UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)){
CGFloat cellWidth = [[UIScreen mainScreen] bounds].size.width-360;
CGFloat cellHeigt = [[UIScreen mainScreen] bounds].size.height-60;
NSLog(@"Is Landscape");
return CGSizeMake(cellWidth, cellHeigt);
}
//Set Potrait size of cells
else{
CGFloat cellWidth = [[UIScreen mainScreen] bounds].size.width-60;
CGFloat cellHeigt = [[UIScreen mainScreen] bounds].size.height-160;
NSLog(@"Is Portrait");
return CGSizeMake(cellWidth, cellHeigt);
}
}
您是否已啓用對屬性檢查器中集合視圖的分頁?而不是使用像360或60這樣的幻數,您應該使用相對於屏幕大小的值,即基於屏幕寬度/高度的分割(因爲它可能會在具有不同屏幕大小的設備上失敗)。 – Rikh
是的,我使用這些'魔術'數字,以便我可以爲單元格獲得合適的大小。你會如何建議我獲得最好的細胞大小?至於分頁,我通過集合代理啓用它。 'coll.pagingEnabled = YES;' –
嗯,我不確定你試圖達到什麼,但不是試圖操縱單元格的內容視圖(因爲它留下了錯誤空間),我只是簡單地設置單元格爲整個屏幕寬度,然後使用autoLayout將其內容居中。如果您可以發佈您想要實現的圖像,也許我可以提供幫助! – Rikh