我正在尝试创建UICollectionViewLayout
的子类,但我无法调用其原始功能,例如itemSize
,我收到错误
Property' itemSize'没有找到对象' SubClass *'
我错过了什么?
我的代码看起来像这样。
·H
#import <UIKit/UIKit.h>
@interface SubClass : UICollectionViewLayout
@end
的.m
#import "SubClass.h"
@implementation SubClass
- (NSArray *) layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *answer = [self layoutAttributesForElementsInRect:rect];
for(int i = 1; i < [answer count]; ++i) {
UICollectionViewLayoutAttributes *currentLayoutAttributes = answer[i];
UICollectionViewLayoutAttributes *prevLayoutAttributes = answer[i - 1];
CGFloat maximumSpacing = 20.0f;
CGFloat origin = CGRectGetMaxX(prevLayoutAttributes.frame);
if(origin + maximumSpacing + currentLayoutAttributes.frame.size.width < self.collectionViewContentSize.width) {
CGRect frame = currentLayoutAttributes.frame;
frame.origin.x = origin + maximumSpacing;
currentLayoutAttributes.frame = frame;
}
}
return answer;
}
@end
答案 0 :(得分:1)
你从错误的类继承。 itemSize
属性属于UICollectionViewFlowLayout
,而非UICollectionViewLayout
。
此外,您可能想要致电[super layoutAttributesForElementsInRect:rect]
。将该消息发送到self
将导致由于无限递归而导致堆栈溢出。