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

  • njhaley

    njhaley

    24 NİSAN 2006
  • TechSmartt

    TechSmartt

    29 Aralık 2010