web-dev-qa-db-ja.com

UICollectionCellを追加するUICollectionView

Interface BuilderでUICollectionCellUICollectionViewに配置しようとすると、不明な理由で配置できません。セルはUICollectionViewに追加せずにツールバーに移動します

私は使っている:

  • iOS SDK 6.0
  • XCode 4.5.1
  • ストーリーボードを使用しません
71

StoryBoard内のUICollectionViewのみが内部にUICollectionViewCellを持っています。 XIBを使用する場合は、CellName.xibで新しいXIBを作成し、それにCollectionViewCellを追加し、UICollectionViewカスタムクラスの名前を指定します。その後、registerNibを使用します。

サンプルコード: https://github.com/lequysang/TestCollectionViewWithXIB

142
LE SANG

UICollectionViewCellファイルを使用している場合、UiCollectionViewXibに直接配置することはできません。ストーリーボードでのみ可能です。 UICollectionViewCellを別のXibファイルに追加します。クラス名を付けます。次に、コレクションビューが表示される前にクラスまたはxibを登録します

 [self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:CELL_ID];

通常、これはviewDidLoadで行われます。

これは、UICollectionViewCellを使用しないカスタムXibの実装です。

 @implementation CollectionViewCell
 @synthesize imageView = _imageView;

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {

    self.backgroundColor = [UIColor whiteColor];
    self.layer.shadowColor = [UIColor blackColor].CGColor;
    self.layer.shadowRadius = 5.0f;
    self.layer.shadowOffset = CGSizeMake(2.0f, 2.0f);
    self.layer.shadowOpacity = 0.5f;

    // Selected background view
    UIView *backgroundView = [[UIView alloc]initWithFrame:self.bounds];
    backgroundView.layer.borderColor = [[UIColor colorWithRed:0.529 green:0.808 blue:0.922 alpha:1]CGColor];
    backgroundView.layer.borderWidth = 10.0f;
    self.selectedBackgroundView = backgroundView;

    // set content view
    CGRect frame  = CGRectMake(self.bounds.Origin.x+5, self.bounds.Origin.y+5, self.bounds.size.width-10, self.bounds.size.height-10);
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
    self.imageView = imageView;          
    [imageView release];
    self.imageView.contentMode = UIViewContentModeScaleAspectFill ;
    self.imageView.clipsToBounds = YES;
    [self.contentView addSubview:self.imageView];       

}
return self;
 }
18
Anil Varghese

はい。実際にインターフェイスビルダーからxibファイル内のcollectionViewにセルを配置したい場合は、実際に回避策があります。

  1. ストーリーボードを作成します。
  2. インターフェイスビルダーからUICollectionViewとUICollectionViewCellを作成します。
  3. 制約などを使用してUIを調整し、意図したとおりに表示されるようにします。
  4. 新しいxibファイルを作成します。
  5. ストーリーボード内のすべてを新しいxibファイルにコピーします。

完璧に機能します。

  • ステップ#3が非常に重要であることに留意してください。#5の後、UICollectionViewをドラッグして移動することはできません。そうすると、セルは魔法のように消えます。それ以外は、完璧に機能します。
0
RainCast