如果我理解正确的话,A的含量UICollectionViewCell
应该去其内部contentView
属性和背景为backgroundView
。
然而,当我拖动UICollectionViewCell
到Interface Builder中没有提及contentView
或backgroundView
。 如果我添加子视图,那些将整个小区作为其母公司,而不是contentView
或backgroundView
。
什么是定义的正确方法UICollectionViewCell
与IB,然后呢?
“如果我添加子视图,那些将整个小区作为其母公司,而不是内容查看”
这不是真的。 如果您在UICollectionViewCell拖动,并添加UI元素到它,你将它们添加到内容视图。 它不会在对象列表中显示出来,但这并不意味着它不存在(同样是真正的NSBox - 它有没有在IB显示任何内容视图)。 如果在的CollectionView:didSelectItemAtIndexPath :,您登录cellForItemAtIndexPath,并查看其子视图,你会发现只有一个,它是同一个你登录cell.contentView得到。 如果你登录其子视图,然后你会看到你的UI元素。
现在,就为背景来看,我不认为这东西你可以从IB访问。 你可以有一个UIView一个XIB文件,然后分配给该小区的物业backgroundView。
由于缺乏一个更好的选择的,我使用了单独的榫文件contentView
和backgroundView
。 然后在我的UICollectionViewCell
子类:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
NSArray *contentViewNib = [[NSBundle mainBundle] loadNibNamed:@"CollectionViewCellContentView" owner:self options:nil];
[self.contentView addSubview:contentViewNib[0]];
NSArray *backgroundViewNib = [[NSBundle mainBundle] loadNibNamed:@"CollectionViewCellBackgroundView" owner:self options:nil];
self.backgroundView = backgroundViewNib[0];
}
return self;
}
我不知道这是否是新的Xcode 8,但UICollectionViewCell
包括用于连接插座backgroundView
和selectedBackgroundView
。
多亏了这一点,你可以添加UIView
(或子类)到您的收藏观察室,并将其连接到插座中的任何一个。 这样,您就可以使用IB来定义它们。
希望这可以帮助!