Iphone 获取SSCollectionViewItem的frame.size

Iphone 获取SSCollectionViewItem的frame.size,iphone,ios,sstoolkit,Iphone,Ios,Sstoolkit,我正在使用SSToolkit/SSCollectionView,我有一个自定义的SSCollectionViewItem,但我很难获得该视图的帧大小,该视图是由SSCollectionView委托设置的: - (CGSize)collectionView:(SSCollectionView *)aCollectionView itemSizeForSection:(NSUInteger)section { return CGSizeMake(280.0f, 280.0f); } 以下是要初始化

我正在使用SSToolkit/SSCollectionView,我有一个自定义的SSCollectionViewItem,但我很难获得该视图的帧大小,该视图是由SSCollectionView委托设置的:

- (CGSize)collectionView:(SSCollectionView *)aCollectionView itemSizeForSection:(NSUInteger)section {
return CGSizeMake(280.0f, 280.0f);
}
以下是要初始化的项目:

#pragma mark - Initializer

- (id)initWithReuseIdentifier:(NSString *)aReuseIdentifier {
    if ((self = [super initWithStyle:SSCollectionViewItemStyleImage reuseIdentifier:aReuseIdentifier])) {
        if([aReuseIdentifier isEqualToString:@"featuredIdentifier"]) {
            NSLog(@"Frame: %f", self.frame.size.width);
            return self;
        } else {
            self.imageView.backgroundColor = [UIColor colorWithWhite:0.95f alpha:1.0f];
            return self;
        }

        self.imageView.backgroundColor = [UIColor colorWithWhite:0.95f alpha:1.0f];
    }
    return self;
}

NSLog(@“帧宽度:%f”,self.FRAME.size.Width)在大多数(所有?)Cocoa框架中始终返回0,直到稍后某个时候视图出现在屏幕上时才设置框架。如果你在一个视图中,我想这可能是最晚的
移动到Windows
。在大多数情况下,视图几何图形应由ViewController在
viewWillLayoutSubviews
或类似过程中进行设置,并且可以(应该)设置子视图以使用适当的“支柱和弹簧”(即
自动重定尺寸任务
)。请参阅大多数(所有?)Cocoa框架的各个部分。

,直到稍后视图出现在屏幕上时,才会设置框架。如果你在一个视图中,我想这可能是最晚的
移动到Windows
。在大多数情况下,视图几何图形应由ViewController在
viewWillLayoutSubviews
或类似过程中进行设置,并且可以(应该)设置子视图以使用适当的“支柱和弹簧”(即
自动重定尺寸任务
)。请参阅的各个部分。

这是预期的行为。所有集合视图项始终使用CGRectZero初始化,因为它们可以在具有不同项大小的节中重用

sCollectionView会在项目显示之前自动调整其大小。如果需要根据项目大小进行布局,则应实现
layoutSubviews


此外,看起来您正在尝试根据标识符绘制不同的图形。我强烈建议您为每个标识符创建不同的类,以保持内容清晰易懂。

这是预期的行为。所有集合视图项始终使用CGRectZero初始化,因为它们可以在具有不同项大小的节中重用

sCollectionView会在项目显示之前自动调整其大小。如果需要根据项目大小进行布局,则应实现
layoutSubviews


此外,看起来您正在尝试根据标识符绘制不同的图形。我强烈建议您为每个标识符创建一个不同的类,以保持内容清晰易懂。

在这种情况下,我还建议您使用
collectionView:willDisplayItem:atIndexPath:
。就我个人而言,我更喜欢
willMoveToSuperview:
而不是窗口变量。@SamSoffes,我不确定调用
willMoveToSuperview
时几何体是否准备就绪;我错了吗?我喜欢你上面关于
布局子视图的建议
;我忘了。在这种情况下,我还建议您使用
collectionView:willDisplayItem:atIndexPath:
。就我个人而言,我更喜欢
willMoveToSuperview:
而不是窗口变量。@SamSoffes,我不确定调用
willMoveToSuperview
时几何体是否准备就绪;我错了吗?我喜欢你上面关于
布局子视图的建议
;我忘了。