Ios 有没有办法从collectionviewcell获取collectionViews帧

Ios 有没有办法从collectionviewcell获取collectionViews帧,ios,uicollectionview,uicollectionviewcell,Ios,Uicollectionview,Uicollectionviewcell,我想用 -我们正在编写的UICollectionviewCell子类中的首选布局属性安装属性 目前我们已经有一个指向outparentViewController的弱指针,我尝试将collectionViewcell帧宽度设置为与parentViewController.view.frame.size.width相同 我不希望从CollectionViewCell子类中有一个指向parentViewController的指针,因为引用parentViewController是个坏主意 我的问题是

我想用

-我们正在编写的
UICollectionviewCell
子类中的首选布局属性安装属性

目前我们已经有一个指向out
parentViewController
的弱指针,我尝试将collectionViewcell帧宽度设置为与
parentViewController.view.frame.size.width
相同

我不希望从
CollectionViewCell
子类中有一个指向
parentViewController
的指针,因为引用parentViewController是个坏主意

我的问题是


是否有一种简单而理想的方法可以从
collectionviewcell
类内部获取collectionviewcell超级视图的框架?

如果您想使用父视图,则不需要任何引用。您可以这样做:

CGFloat width = self.superview.frame.size.width;
正如@Ralfonso在评论中指出的:


此外,如果要在添加到视图层次结构后立即获取superview大小,请重写
didMoveToSuperview:
并访问superview属性。如果为nil,则该视图已从superview中删除。如果非nil,则视图已添加到superview的层次结构中。

此外,如果要在添加到视图层次结构后立即获取superview大小,请覆盖
didMoveToSuperview
并访问
superview
属性。如果为nil,则该视图已从superview中删除。如果非零,视图已添加到superview的层次结构中。@Otávio正在尝试访问superview一个可行的解决方案?@Ralfonso因此,当我们编写over ride函数时,我的collectionviewcell子类中是否有iVar并将superview分配给它?@ShabarinathPabba如果您想保留对superview的引用,请记住您应该使用
。无论如何,我不认为你需要引用superview,你可以像我回答的第一个例子一样使用它。是的,这是一个可行的解决方案,并不优雅,但如果你需要知道superview的宽度,这通常是一种方法。@ShabarinathPabba关于UICollectionViewCell子类中的superview ivar-是的,superview ivar已经是一个成员,因为它是UIView子类。但是,
superview
属性是
readonly
,您不应该试图直接修改备份ivar。如果您不想在答案中使用
.superview
,请改用delegate..@0yeoj,并在delegate中有一个获取帧的方法?是的,但它可能会过死。。为什么不使用
[UIScreen mainScreen].bounds
您对viewController中的边框进行了一些修改吗?@0yeoj我们不能使用mainScreen边框的原因是,我们对iPhone 6 Plus和iPad设备使用了拆分视图控制器。这也解释了当您更改方向时,唯一的边框修改。。然后,
委托
如果不是
。您可以选择superview
。。