【发布时间】:2014-11-14 14:26:42
【问题描述】:
以下代码在 iOS 7.1 上完美运行
UIView *superView = self.superview;
[self removeFromSuperview];
CGFloat rightMarginWidth = self.rightMarginWidth ? self.rightMarginWidth : defaultRightMarginWidth;
CGRect newFrame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width + rightMarginWidth, self.frame.size.height);
//assign a new frame
self.frame = newFrame;
[superView addSubview:self];
但是,在 iOS 8.0 上,假设 newFrame 是 origin=(x=30, y=29) size=(width=127, height=34)。赋值后self.frame变成了origin=(x=0, y=0) size=(width=127, height=34)。
为什么这里丢失了“原点”值?
【问题讨论】:
-
为什么要从superview中删除视图,只是为了重新添加它?只需改变它的框架。
-
@LeoNatan 只是换帧,不这样做会导致自动布局约束冲突。
-
如果有自动布局,你不应该改变框架。
-
@LeoNatan 自动布局是由故事板设置的
-
@DavidLiu 有什么解决办法吗?我也有这个问题