SORU
2 EKİM 2013, ÇARŞAMBA


topLayoutGuide çocuk görünümünde denetleyicisi

Saydam durum ile UIPageViewController bar ve navigation bar var. topLayoutGuide onun beklendiği gibi 64 piksel.

Ancak, çocuğun eğer durum çubuğu ve gezinti çubuğu altında görünür olup olmadıklarını bile UIPageViewController raporun denetleyicileri 0 piksel topLayoutGuide görünüm.

Bu beklenen davranıştır? Eğer öyleyse, topLayoutGuide gerçek altında çocuk görünümü denetleyicisi bir görünüm pozisyon için en iyi yolu nedir?

(bir hack düşünün istiyorum parentViewController.topLayoutGuide kullanarak kısa)

CEVAP
4 ŞUBAT 2014, Salı


this answer doğru olsa da, ben hala kapsama ağacı sağ üst görünüm denetleyicisi bulmak için seyahat ve olarak tarif ettiğiniz şey için kendimi zorunda bulundu "topLayoutGuide". gerçek Bu şekilde el ile automaticallyAdjustsScrollViewInsets uygulamak edebilirim.

Bunu nasıl yaptığımı

Tablo görünümü benim denetleyicisi (UIViewController aslında bir alt sınıf), ben bu var:

- (void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];

    _tableView.frame = self.view.bounds;

    const UIEdgeInsets insets = (self.automaticallyAdjustsScrollViewInsets) ? UIEdgeInsetsMake(self.ms_navigationBarTopLayoutGuide.length,
                                                                                               0.0,
                                                                                               self.ms_navigationBarBottomLayoutGuide.length,
                                                                                               0.0) : UIEdgeInsetsZero;
    _tableView.contentInset = _tableView.scrollIndicatorInsets = insets;
}

UIViewController, bu onları hayata nasıl: kategori yöntemler dikkat edin

@implementation UIViewController (MSLayoutSupport)

- (id<UILayoutSupport>)ms_navigationBarTopLayoutGuide {
    if (self.parentViewController &&
        ![self.parentViewController isKindOfClass:UINavigationController.class]) {
        return self.parentViewController.ms_navigationBarTopLayoutGuide;
    } else {
        return self.topLayoutGuide;
    }
}

- (id<UILayoutSupport>)ms_navigationBarBottomLayoutGuide {
    if (self.parentViewController &&
        ![self.parentViewController isKindOfClass:UINavigationController.class]) {
        return self.parentViewController.ms_navigationBarBottomLayoutGuide;
    } else {
        return self.bottomLayoutGuide;
    }
}

@end

Umarım bu yardımcı olur :)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DudeFromUkraine

    DudeFromUkra

    7 Ocak 2008
  • Glyn Dewis

    Glyn Dewis

    25 AĞUSTOS 2007
  • iMasterful

    iMasterful

    11 EYLÜL 2009