我有子类的UIView,但我需要防止框架发生变化,所以我试图重写setFrame:
方法,只是忽略值传递,并在self.superview
创造我自己的CGRect基地,并把它传递给[super setFrame:
覆盖的UIView的框架
如何让UIView的框架不可更改? (来自子类)
我有子类的UIView,但我需要防止框架发生变化,所以我试图重写setFrame:
方法,只是忽略值传递,并在self.superview
创造我自己的CGRect基地,并把它传递给[super setFrame:
覆盖的UIView的框架
如何让UIView的框架不可更改? (来自子类)
第1步:重写setFrame什么都不做。
- (void)setFrame:(CGRect)newRect
{
}
步骤2:将你的半静态帧设置到您的willMoveToSuperview:
重写版本,以获得有效的参考上海华。
- (void)willMoveToSuperview:(UIView *)newSuperview
{
CGRect newFrame = newSuperview.frame;
//manipulate the frame here
[super setFrame:newFrame];
}
谢谢,我不知道我怎么可能错过这个方法:) – 2011-04-21 21:52:03
嘿,很高兴这个为你工作 - 虽然增加了一个,但确保newSuperview实际上不是零当派生帧...干杯和快乐的蛋狩猎 – Till 2011-04-21 21:54:01
等等,难道你不能把autoresizingMask设置为0吗?我虽然这会阻止视图调整大小时父视图(也尝试过,似乎为我工作)。
我的子类更像是一个警戒视图,所以我希望它始终处于屏幕中间。 – 2011-04-21 22:28:23
这是不是工作?听起来对我来说是一个很好的方法。 – 2011-04-21 21:26:23
不,我认为这是因为框架设置之前有一个超级视图 – 2011-04-21 21:31:05
我需要'addedToSuperview'方法 – 2011-04-21 21:31:22