[英]Override UIView's frame
我已经继承了UIView的子类,但是我需要防止框架发生变化,因此我尝试覆盖setFrame:
方法,而忽略传递的值,并基于self.superview
创建我自己的CGRect并将其传递给[super setFrame:
如何使UIView的框架不变? (从子类内部)
第1步:重写setFrame不执行任何操作。
- (void)setFrame:(CGRect)newRect
{
}
步骤2:将半静态框架设置移至willMoveToSuperview:
替代版本中,以获取有效的willMoveToSuperview:
参考。
- (void)willMoveToSuperview:(UIView *)newSuperview
{
CGRect newFrame = newSuperview.frame;
//manipulate the frame here
[super setFrame:newFrame];
}
等一下,您不能将autoresizingMask设置为0吗? 尽管这样做可以防止在调整父视图的大小时对其进行调整(也尝试过,并且似乎对我有用)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.