2014-09-20 12 views
2

我在屏幕上以編程方式放置了一個帶有框架(0,100,50,50)的UIView,並將其autoresizingMask設置爲UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin,當我開始旋轉屏幕時,視圖由於某種原因粘在右邊。如果我設置視圖框架(20,100,50,50),一切正常。Autoresizingmask工作不正常

我在做什麼錯?

示例代碼:

- (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 *電池= [[ UIView a ]; initWithFrame:CGRectMake(0,100,50,50)];

的UIView *細胞= [[UIView的頁頭] initWithFrame:方法CGRectMake(20,100,50,50)];

循環之前:

--------------------------- 
|       | 
| =====     | 
| | |     | 
| =====     | 
|       | 
|       | 
|       | 
|       | 
|       | 
|       | 
|       | 
|       | 
|       | 
----------------------------- 
|    o    | 
--------------------------- 

後旋轉一切工作良好:

------------------------------------------------- 
|            | | 
| =====          | | 
| | |          | | 
| =====          | | 
|            | | 
|            | o | 
|            | | 
|            | | 
|            | | 
|            | | 
|            | | 
------------------------------------------------- 

--------------------------- 
|       | 
| =====     | 
| | |     | 
| =====     | 
|       | 
|       | 
|       | 
|       | 
|       | 
|       | 
|       | 
|       | 
|       | 
----------------------------- 
|    o    | 
--------------------------- 
+0

什麼你想在你的原始x = 0幀的情況發生? – 2014-09-20 13:18:05

+0

當我將設備轉回縱向時,至少視圖必須回到初始位置。我不明白爲什麼觀點堅持正確的邊緣? – Juancho 2014-09-20 13:41:00

回答

0

試試這個:

cell.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | 
         UIViewAutoresizingFlexibleBottomMargin;