Autoresizingmask 无法正常工作
Posted
技术标签:
【中文标题】Autoresizingmask 无法正常工作【英文标题】:Autoresizingmask is not working correct 【发布时间】:2014-09-20 12:09:04 【问题描述】:我以编程方式在屏幕上放置了一个带有框架 (0, 100, 50, 50) 的 UIView,并将其 autoresizingMask 设置为 UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin 并且当我开始旋转屏幕时,由于某种原因,视图会停留在右边缘。如果我设置视图框架(20、100、50、50)一切正常。
我做错了什么?
示例代码:
- (void)viewDidLoad
[super viewDidLoad];
UIView *cell = [[UIView alloc] initWithFrame:CGRectMake(0, 100, 50, 50)];
cell.backgroundColor = [UIColor blackColor];
cell.autoresizingMask = UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleLeftMargin;
[self.view addSubview:cell];
- (NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskAll;
旋转前:
---------------------------
| |
|===== |
|| | |
|===== |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
-----------------------------
| o |
---------------------------
旋转后一切都不好了:
------------------------------------------------
| | |
| =====| |
| | || |
| =====| |
| | |
| | o |
| | |
| | |
| | |
| | |
| | |
------------------------------------------------
---------------------------
| |
| =====|
| | ||
| =====|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
-----------------------------
| o |
---------------------------
如果我改变了
UIView *cell = [[UIView alloc] initWithFrame:CGRectMake(0, 100, 50, 50)];
到
UIView *cell = [[UIView alloc] initWithFrame:CGRectMake(20, 100, 50, 50)];
旋转前:
---------------------------
| |
| ===== |
| | | |
| ===== |
| |
| |
| |
| |
| |
| |
| |
| |
| |
-----------------------------
| o |
---------------------------
旋转后一切正常:
-------------------------------------------------
| | |
| ===== | |
| | | | |
| ===== | |
| | |
| | o |
| | |
| | |
| | |
| | |
| | |
-------------------------------------------------
---------------------------
| |
| ===== |
| | | |
| ===== |
| |
| |
| |
| |
| |
| |
| |
| |
| |
-----------------------------
| o |
---------------------------
【问题讨论】:
您希望原始 x=0 帧发生什么? 当我将设备转回纵向时,至少视图必须回到初始位置。而且我不明白为什么视图会停留在右边缘? 【参考方案1】:试试这个:
cell.autoresizingMask = UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleBottomMargin;
【讨论】:
以上是关于Autoresizingmask 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
对于 UITableView.tableHeaderView 的子视图,autoresizingMask 未按预期工作