2011-04-21 86 views
1

我有子类的UIView,但我需要防止框架发生变化,所以我试图重写setFrame:方法,只是忽略值传递,并在self.superview创造我自己的CGRect基地,并把它传递给[super setFrame:覆盖的UIView的框架

如何让UIView的框架不可更改? (来自子类)

+0

这是不是工作?听起来对我来说是一个很好的方法。 – 2011-04-21 21:26:23

+0

不,我认为这是因为框架设置之前有一个超级视图 – 2011-04-21 21:31:05

+0

我需要'addedToSuperview'方法 – 2011-04-21 21:31:22

回答

6

第1步:重写setFrame什么都不做。

- (void)setFrame:(CGRect)newRect 
{ 
} 

步骤2:将你的半静态帧设置到您的willMoveToSuperview:重写版本,以获得有效的参考上海华。

- (void)willMoveToSuperview:(UIView *)newSuperview 
{ 
    CGRect newFrame = newSuperview.frame; 
    //manipulate the frame here 
    [super setFrame:newFrame]; 
} 
+0

谢谢,我不知道我怎么可能错过这个方法:) – 2011-04-21 21:52:03

+0

嘿,很高兴这个为你工作 - 虽然增加了一个,但确保newSuperview实际上不是零当派生帧...干杯和快乐的蛋狩猎 – Till 2011-04-21 21:54:01

0

等等,难道你不能把autoresizingMask设置为0吗?我虽然这会阻止视图调整大小时父视图(也尝试过,似乎为我工作)。

+0

我的子类更像是一个警戒视图,所以我希望它始终处于屏幕中间。 – 2011-04-21 22:28:23