真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ios7中關(guān)于導(dǎo)航切換影響UIScrollView的問(wèn)題

在 iOS 7 中,如果某個(gè) UIViewController 的 self.view 第一個(gè)子視圖是 UIScollView, 同時(shí)當(dāng)這個(gè) UIViewController 被 push 或 initWithRootController 成為 UINavigationController控制的Controller時(shí),這個(gè) UIViewController的 view 的子視圖 UIScollView 的所有子視圖, 都會(huì)被下移 64px。

成都創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比青田網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式青田網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋青田地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴(lài)。

   這個(gè)下移 64px 的前提是 navigationBar 和 statusBar 沒(méi)有隱藏。因?yàn)闉?statusBar 默認(rèn)的 Height 是 20px,而 navigatiBar  默認(rèn)的 Height 是 44px。下面來(lái)比較一下

實(shí)例:

   不使用導(dǎo)航的界面跳轉(zhuǎn)

    1. 在 AppDelegate.m 文件中:

Obj-c代碼 ios7 中關(guān)于導(dǎo)航切換影響UIScrollView的問(wèn)題
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  

  2. {  

  3.  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  

  4.  self.window.backgroundColor = [UIColor whiteColor];                                

  5.  //下面兩行為增加的代碼                                                          

  6.  ViewController *rootViewController = [[ViewController alloc] init];  

  7.  [self.window setRootViewController:rootViewController];  

  8.  [self.window makeKeyAndVisible];  

  9.    return YES;  

  10. }  

2. 在 ViewController.m 中:

Obj-c代碼 ios7 中關(guān)于導(dǎo)航切換影響UIScrollView的問(wèn)題
  1. - (void)viewDidLoad  

  2. {  

  3. [super viewDidLoad];  

  4. UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(30.0,                                                           64.0, 260.0, 300.0)];  

  5. [scrollView setBackgroundColor:[UIColor redColor]];  

  6. UIView *view = [[UIView alloc] initWithFrame:scrollView.bounds];  

  7. [view setBackgroundColor:[UIColor blueColor]];  

  8. [scrollView addSubview:view];  

  9. [self.view addSubview:scrollView];  

  10. }  

3. 運(yùn)行后的結(jié)果:

ios7 中關(guān)于導(dǎo)航切換影響UIScrollView的問(wèn)題

這種情況下,scrollView并未受影響。

4. 現(xiàn)在使用 UINavigationController,  將開(kāi)始 AppDelegate.m 增加的那兩行代碼修改成:  

Obj-c代碼 ios7 中關(guān)于導(dǎo)航切換影響UIScrollView的問(wèn)題
  1. ViewController *rootViewController = [[ViewController alloc] init];  

  2.  UINavigationController *navController = [[UINavigationController alloc]  

  3.                                 initWithRootViewController:rootViewController];  

  4.  [self.window setRootViewController:navController];  


5. 現(xiàn)在再次運(yùn)行程序:

ios7 中關(guān)于導(dǎo)航切換影響UIScrollView的問(wèn)題

如結(jié)果顯示, scrollView 背景色為藍(lán)色的子視圖位置自動(dòng)下移了。 而這個(gè)下移的距離剛好是 64.0px。

解決方法:

   第一種:在 ViewController 的 init 的方法中增加一行代碼:

Obj-c代碼 ios7 中關(guān)于導(dǎo)航切換影響UIScrollView的問(wèn)題
  1. self.automaticallyAdjustsScrollViewInsets = NO;  

第二種: 讓UIScrollView 不要成為 ViewController 的 View 的第一個(gè)子視圖。具體操作:將 viewDidLoad方法 修改成如下:

Obj-c代碼 ios7 中關(guān)于導(dǎo)航切換影響UIScrollView的問(wèn)題
  1. - (void)viewDidLoad  

  2. {  

  3. [super viewDidLoad];  

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

  5. [self.view addSubview:firstSubView];  

  6. UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(30.0,                                                           64.0, 260.0, 300.0)];  

  7. [scrollView setBackgroundColor:[UIColor redColor]];  

  8. UIView *view = [[UIView alloc] initWithFrame:scrollView.bounds];  

  9. [view setBackgroundColor:[UIColor blueColor]];  

  10. [scrollView addSubview:view];  

  11. [self.view addSubview:scrollView];  

  12. }  

第三種:將 UIScorllView 的子視圖上移 64.0px 。修改 viewDidLoad 方法:

Obj-c代碼 ios7 中關(guān)于導(dǎo)航切換影響UIScrollView的問(wèn)題
  1. UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(30.0,                                                           64.0, 260.0, 300.0)];  

  2. [scrollView setBackgroundColor:[UIColor redColor]];  

  3. CGRect viewFrame = CGRectMake(0, -64.0, CGRectGetWidth(scrollView.frame),  

  4.                                                                                   CGRectGetHeight(scrollView.frame));  

  5. UIView *view = [[UIView alloc] initWithFrame: viewFrame];  

  6. [view setBackgroundColor:[UIColor blueColor]];  

  7. [scrollView addSubview:view];  

  8. [self.view addSubview:scrollView];  

第四種:設(shè)置導(dǎo)航欄的透明屬性。

self.navigationController.navigationBar.translucent =YES

改變導(dǎo)航欄透明度,也會(huì)影響,這個(gè)可以根據(jù)自己的實(shí)際需求進(jìn)行調(diào)整。d


網(wǎng)頁(yè)標(biāo)題:ios7中關(guān)于導(dǎo)航切換影響UIScrollView的問(wèn)題
文章URL:http://weahome.cn/article/pshecc.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部