uiview - CGRect 的 setFrame 在 iOS 8.0 上丢失了原始值

标签 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.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)。

为什么“原点”值在这里丢失了?

最佳答案

如果 View Controller 具有自动布局约束,则应添加 self.translatesAutoresizingMaskIntoConstraints = YES;

关于uiview - CGRect 的 setFrame 在 iOS 8.0 上丢失了原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25943293/

相关文章:

iphone - 将触摸传递给下一个响应者或其他 subview iOS

unit-testing - XCTestExpectation : API violation - multiple calls made to -[XCTestExpectation fulfill] 错误

iphone - 为 iphone 设置 Revmob 横幅框架

Java 视频播放器

cocoa - NSSplitView 中的 NSTableView 框架不正确

iphone - 从纵向旋转到横向时如何更改 UIBarButtonItem 大小?

swift 4 : How to set top constraint when you have a navigation controller?

iphone - UIView圆角问题

ios - iPhone 6 状态栏颜色

Xcode 6.4 显示具有唯一 ID 的重复 'Simulators'