İOS7'den başlayarak, görünüm denetleyicileri varsayılan olarak tam ekran düzenini kullanır. Aynı zamanda, görüşlerini nasıl düzenlediği üzerinde daha fazla kontrole sahipsiniz ve bu, bu özelliklerle yapılır:
edgesForExtendedLayout
Temel olarak, bu özellik ile görünümünüzün hangi taraflarının tüm ekranı kapsayacak şekilde genişletilebileceğini ayarlayabilirsiniz. Eğer bir itme düşünün UIViewController
bir içine UINavigationController
. Bu görünüm denetleyicisinin görünümü düzenlendiğinde, gezinme çubuğunun bittiği yerde başlar, ancak bu özellik görünümün hangi taraflarının (üst, sol, alt, sağ) tüm ekranı kaplayacak şekilde genişletilebileceğini ayarlar.
Bir örnekle görelim:
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
Burada değerini ayarlamıyorsunuz edgesForExtendedLayout
, bu nedenle varsayılan değer alınır ( UIRectEdgeAll
), böylece görünüm tüm ekranı dolduracak şekilde düzenini genişletir.
Sonuç budur:
Gördüğünüz gibi, kırmızı arka plan gezinme çubuğunun ve durum çubuğunun arkasına uzanır.
Şimdi bu değeri şu şekilde ayarlayacaksınız UIRectEdgeNone
, bu nedenle görünüm denetleyicisine görünümü ekranı kaplayacak şekilde genişletmemesini söylüyorsunuz:
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor redColor];
viewController.edgesForExtendedLayout = UIRectEdgeNone;
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
Ve sonuç:
automaticallyAdjustsScrollViewInsets
Bu özellik, görünümünüz a. UIScrollView
Veya benzeri gibi olduğunda kullanılır UITableView
. Tablonuzun gezinme çubuğunun bittiği yerden başlamasını istersiniz, çünkü eğer tüm içeriği görmezsiniz, fakat aynı zamanda kaydırma sırasında tablonuzun tüm ekranı kaplamasını istersiniz. Bu durumda, edgesForExtendedLayout
Yok'u ayarlamak çalışmaz çünkü tablonuz gezinme çubuğunun bittiği yerde kaymaya başlayacaktır ve arkasına gitmeyecektir.
Görünüm denetleyicisinin ekleri otomatik olarak ayarlamasına izin verirseniz (bu özelliği EVET'e, varsayılan değeri de ayarlar), tablonun üstüne ekler ekleyeceği şekilde burada bu özellik kullanışlı olur. çubuğu sona erer, ancak kaydırma tüm ekranı kaplar.
NO olarak ayarlandığında:
Ve EVET (varsayılan olarak):
Her iki durumda da, tablo gezinme çubuğunun arkasında kayar, ancak ikinci durumda (YES), gezinme çubuğunun altından başlar.
extendedLayoutIncludesOpaqueBars
Bu değer sadece öncekilere bir ektir. Varsayılan olarak, bu parametre NO olarak ayarlıdır. Durum çubuğu opak ise, görünümler bunu (kapsayacak şekilde görünümünüzü uzatmak bile, durum çubuğu eklemeyi uzatılmayacağını edgesForExtendedLayout
için UIRectEdgeAll
).
Değeri EVET olarak ayarlarsanız, görünüm tekrar durum çubuğunun altına girer.
Bir şey net değilse, bir yorum yazın, ben de cevaplayacağım.
İOS ne UIScrollView kullanacağını nasıl biliyor?
iOS, ViewController görünümünüzdeki ilk alt görünümü, dizin 0'da olanı alır ve alt sınıfı ise UIScrollView
, açıklanan özellikleri buna uygular.
Tabii ki, bu UITableViewController
varsayılan olarak çalıştığı anlamına gelir (çünkü UITableView
ilk görünümdür).