系統在某些情況下會自動調節UIScrollView的contentInset,uiscrollviewinset

來源:互聯網
上載者:User

系統在某些情況下會自動調節UIScrollView的contentInset,uiscrollviewinset

 

    出現情景

    如果一個控制器(ViewController)被導航控制器管理,並且該控制器的第一個子控制項是UIScrollView,系統預設會調節UIScrollView的contentInset

  UIEdgeInsetsMake(64, 0, 0, 0) // 有導覽列

  UIEdgeInsetsMake(20, 0, 0, 0) // 沒有導覽列

  如果上述情況中的導航控制器又被UITabBarController管理,那麼

    UIEdgeInsetsMake(64, 0, 49, 0) // 導航控制器又被UITabBarController管理

  如何取消系統的預設這自動調節功能

  ViewController.automaticallyAdjustsScrollViewInsets = NO;

  代碼驗證 -->

////  ViewController.m#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;@property (nonatomic, weak) UISwitch *customSwitch;@end@implementation ViewController- (void)viewDidLoad {        [super viewDidLoad];    UISwitch *customSwitch = [[UISwitch alloc] init];    [self.scrollView addSubview:customSwitch];    self.customSwitch = customSwitch;    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{        NSLog(@"%@",self.scrollView);        NSLog(@"%@",NSStringFromUIEdgeInsets(self.scrollView.contentInset));        NSLog(@"%@",NSStringFromCGRect(self.customSwitch.bounds));    });}// 列印結果/* 情況一 只有UInavigationController <UIScrollView: 0x7fbbd301fa00; frame = (0 0; 375 667); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7fbbd27246e0>; layer = <CALayer: 0x7fbbd25176a0>; contentOffset: {0, -64}; contentSize: {0, 0}> {64, 0, 0, 0} {{0, 0}, {51, 31}} *//* 情況二 只有UInavigationController,但是隱藏了導航條 <UIScrollView: 0x7f80cb024200; frame = (0 0; 375 667); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7f80c9563330>; layer = <CALayer: 0x7f80c955f090>; contentOffset: {0, -20}; contentSize: {0, 0}> {20, 0, 0, 0} {{0, 0}, {51, 31}} *//*   情況三 既有UInavigationController,又有UITabBarController <UIScrollView: 0x7fe60903fa00; frame = (0 0; 375 667); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7fe608e3b100>; layer = <CALayer: 0x7fe608f06320>; contentOffset: {0, -64}; contentSize: {0, 0}> {64, 0, 49, 0} {{0, 0}, {51, 31}} */// 上面採用了延遲的方法(GCD中的方法)來列印,在viewDidLoad方法中列印的結果不是最終的結果,當然也可以採用下面的方法來列印- (void)viewDidLayoutSubviews {//    NSLog(@"%@",self.scrollView);//    NSLog(@"%@",NSStringFromUIEdgeInsets(self.scrollView.contentInset));    }- (void)viewDidAppear:(BOOL)animated {    //    NSLog(@"%@",self.scrollView);//    NSLog(@"%@",NSStringFromUIEdgeInsets(self.scrollView.contentInset));    }@end

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.