你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> ios7 UIScrollView 尺寸問題

ios7 UIScrollView 尺寸問題

編輯:IOS開發綜合
如果在UINavigationController內設置一個UIViewControlller,而UIViewController的第一個子視圖是UIScrollView的話,UIScrollview裡面所有的subView都會發生下移,如圖所示 UIScrollView 尺寸問題 title=ios7 UIScrollView 尺寸問題> 代碼為

- (void)viewDidLoad

{

[super viewDidLoad];

UIScrollView *tempScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, 320, 200)];

[tempScroll setBackgroundColor:[UIColor grayColor]];

[tempScroll setContentSize:CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height)];

[self.view addSubview:tempScroll];

UIButton *tempButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[tempButton setBackgroundColor:[UIColor redColor]];

[tempButton setTitle:@subView A forState:UIControlStateNormal];

[tempButton setFrame:CGRectMake(80, 0, 80, 100)];

NSLog(@%d,tempScroll.subviews.count);

[tempScroll addSubview:tempButton];

}

經過驗證性的代碼,我發現ios7有一個機制

在navigationBar,以及statusBar都顯示的情況下,Navigation的當前VC,他的VC的view的子視圖樹的根部的第一個子視圖,如果是Scrollview的話,這個scrollview的所有子視圖都會被下移64個像素。

發現了這個機制之後,怎麼去修正呢?

修正方案有兩個

1、把scrollview的所有子視圖上移64個像素。

UIView *targetView = self.view;

while (targetView.subviews.count >0 && ![targetView isKindOfClass:[UIScrollView class]]) {

targetView = [targetView.subviews objectAtIndex:0];

}

if ([targetView isKindOfClass:[UIScrollView class]]) {

NSLog(@you are a scrollview);

CGSize tempSize = ((UIScrollView *)targetView).contentSize;

tempSize.height -= 64;

[(UIScrollView *)targetView setContentSize:tempSize];

for (UIView *subView in targetView.subviews) {

CGRect tempRect = subView.frame;

tempRect.origin.y -= 64;

[subView setFrame:tempRect];

}

}

2、把scrollView更改地位,是它不是子視圖樹的根部第一個子視圖。

- (void)viewDidLoad

{

[super viewDidLoad];

UIView *tempBackGround = [[UIView alloc] initWithFrame:self.view.bounds];

[self.view addSubview:tempBackGround];

UIScrollView *tempScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, 320, 200)];

[tempScroll setBackgroundColor:[UIColor grayColor]];

[tempScroll setContentSize:CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height)];

[self.view addSubview:tempScroll];

UIButton *tempButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[tempButton setBackgroundColor:[UIColor redColor]];

[tempButton setTitle:@subView A forState:UIControlStateNormal];

[tempButton setFrame:CGRectMake(80, 0, 80, 100)];

NSLog(@%d,tempScroll.subviews.count);

[tempScroll addSubview:tempButton];

 

}

經過了修正如圖所示

ios7UIScrollView 尺寸問題 title=ios7 UIScrollView 尺寸問題>

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved