Uiview CGRect';s在iOS 8.0上设置帧丢失原点值

Uiview CGRect';s在iOS 8.0上设置帧丢失原点值,uiview,ios8,frame,Uiview,Ios8,Frame,下面的代码在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

下面的代码在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];
然而,在iOS8.0上,假设newFrame是origin=(x=30,y=29)size=(width=127,height=34)。赋值后,
self.frame
成为原点=(x=0,y=0)大小=(宽度=127,高度=34)


“原点”值在此处丢失的原因?

如果视图控制器具有自动布局约束,则应添加
self.translatesAutoResizezingMaskintoConstraints=YES

为什么要从superview中删除视图,然后再次添加?只更改其框架。@LeoNatan只更改框架,不这样做将导致自动布局约束冲突。如果存在自动布局,则不应更改框架。@LeoNatan自动布局是由stroryboard@DavidLiu有什么解决办法吗?我也有这个问题