2014-09-19 52 views
3

下面的代碼完美地工作在iOS 7.1的CGRect的SETFRAME丟失原始值8.0

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的是原點=(X = 30,Y = 29)大小=(寬度= 127,高度= 34)。分配後,self.frame成爲原點=(x = 0,y = 0)size =(width = 127,height = 34)。

爲什麼「原點」值在這裏丟失?

+0

爲什麼你從上海華刪除認爲,只有重新添加呢?只是改變它的框架。 – 2014-09-19 23:08:36

+0

@LeoNatan只是改變框架,不這樣做會導致自動佈局約束衝突。 – DavidLiu 2014-09-20 05:55:30

+1

如果有自動佈局,您不應該改變框架。 – 2014-09-20 08:35:15

回答

-1

如果視圖控制器已經自動佈局的限制,你應該添加self.translatesAutoresizingMaskIntoConstraints = YES;