UICollectionViewを使用したいのですが、次のレイアウトを作成できます。
ご覧のとおり、セルには2つの異なるサイズがあります。 1つは行の1/4で、もう1つは3/4です。 UICollectionViewを使用してこの種のレイアウトを作成することは可能ですか?
誰かが私にそれを行う方法を教えることができますか?またはサンプルはありますか?私はすでに多くのチュートリアルとリファレンスを研究しています。しかし、それでもそれを行う方法がわかりません。
ありがとう!
さて、当分の間、アイテムの幅をハードコーディングしました(72.0と23.0)。 5.0の残りの部分は、暫定的な間隔とedgeInsetsで使用されます。このコードはあなたが望むものを正確に与えるでしょう。
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
return 10.0;
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
return 10.0;
}
#pragma mark - CollectionViewFlowLayout Methods
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGSize newSize = CGSizeZero;
newSize.height = 100;
CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBounds.size;
if(indexPath.item % 4 == 0 || indexPath.item % 4 == 3)
{
// Size : 1/4th of screen
newSize.width = screenSize.width * 0.23;
}
else
{
// Size : 3/4th of screen
newSize.width = screenSize.width * 0.72;
}
return newSize;
}
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(10, 2.0, 10, 2.0);
}
それにはさまざまな方法があります。
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
メソッドを実装することで実行できます。
次のチュートリアルで説明するように、コレクションビューを完全にカスタマイズできます。
http://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest
目的のレイアウトからは、UITableviewCell
(1/4サイズと3/4サイズの両方のセルを1つのセルに読み込む)を使用し、自動レイアウトでサイズを変更することで、外観を簡単に取得できるように見えます。 。
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
return [(NSString*)[arrayOfStats objectAtIndex:indexPath.row] sizeWithAttributes:NULL];
}
このメソッドを使用すると、セルに異なるサイズを返すことができます。このリンクを参照してください ラベル幅に応じたUICollectionViewの動的セル幅