2013-10-29 18 views

cevap

6

sürece ekran Yatay olduğu gibi, geçici çözüm olarak bu kullanabilirsiniz:

UIView *coverView = [[UIView alloc] initWithFrame:CGRectMake(320, 0, 1, 64)]; 
    [coverView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"black_pixel.png"]]]; 
    [splitViewController.view addSubview:coverView]; 
+1

Tablo görünümleri arasında ileri ve geri gezinirken, bölücü rengini birkaç farklı renge değiştirmeme izin veren tek şey budur. 'Siyah bir piksel kullanmak yerine' coverView 'arkaplan rengini ayarladım. –

0

bu deneyin:

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { 
    splitViewController.view.backgroundColor = [UIColor blackColor]; 
} 
+0

Bu benim için çalışmadı – Bulwinkel

-1

Aşağıdaki yapabilirsiniz o beyaz çizgiden kurtulmak için:

self.splitViewController.view.backgroundColor = [UIColor blackColor]; 
for (UIView *subView in self.splitViewController.view.subviews) { 
    subView.backgroundColor = [UIColor blackColor]; 
} 
bunun doğrudan erişim yoksa splitViewController almak için bir özel yol : Kaputun altında

UIViewController *_splitViewController = self.parentViewController; 
while (![_splitViewController isKindOfClass:[UISplitViewController class]]) { 
    _splitViewController = _splitViewController.parentViewController; 
} 
_splitViewController.view.backgroundColor = [UIColor blackColor]; 
for (UIView *subView in ((UISplitViewController *)_splitViewController).view.subviews) { 
    subView.backgroundColor = [UIColor blackColor]; 
} 
4

, ana ve detay görünümleri altında, ekranın en üstündeki bir UILayoutContainerView var . Nav çubukları arasındaki ayırıcı rengini değiştirmek için, yalnızca o görünümün arka plan rengini değiştirmeniz gerekir.

Swift yılında SplitViewController sizin sınıfta, aşağıdakileri deneyin:

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    if let potentialSeparatorView = view.subviews.first as? UIView { 
     if round(potentialSeparatorView.bounds.height) == 64 { 
      potentialSeparatorView.backgroundColor = UIColor(red:0.20, green:0.55, blue:0.83, alpha:1) 
     } 
    } 
} 
+0

Sahip olmadığınız bir sınıfın alt görünümlerine erişmek, güvensiz ve hiçbir zaman bir gönderim uygulamasında yapmamanız gereken bir şeydir. Kayan nokta değerini belirli bir değere (yani bir çeşit epsilon içermeyen) karşılaştırdığımızda, güvenilmez olduğu gibi. Kısaca: Bunu yapma. Basitçe yapma. Bunlardan ikisi de değil. – Regexident

+0

@Regexident Uyarılarınız için teşekkür ederiz. Bu durumda view.subviews [0] 'a erişmek neden güvensiz olduğu hakkında daha fazla bilgi verebilir misiniz? Kayan noktayı karşılaştırmak için bunun doğru olmadığını biliyorum, ancak nükleer bir aptal başlatmıyorum. Başarısız olsaydı, arka plan rengi değiştirilemezdi, hepsi bu kadar. –

+0

Sınıfın sahibi, görüntü hiyerarşisini istediği zaman değiştirebilir (ve Apple genellikle, açıkça). Genel olarak, hiç kimse, sahip olunmayan bir sınıfın uygulama ayrıntılarına (hiç değilse) güvenmemelidir.Ve "height == 64", Apple görünümün boyutlarını değiştirir ya da potansiyel yuvarlama hataları nedeniyle yüksekliği farklı bir şekilde hesaplar etmez başarısız olur. – Regexident

1

böyle Konteyner Manzaralı ek ViewController yılında senin UISplitViewController koyun:

screenshot

Sonra master'da UINavigationBar s gizlemek ve detay viewControllers ve ek UIViewController içinde beyaz bir çizgi olmadan sadece bir UINavigationBar olacaktır.

screenshot

0

sizin tableviewcontroller (ana viewcontroller) içinde

splitViewController?.view.backgroundColor = UIColor.clear 

kullanım

, size de istediğiniz rengi ayarlayabilirsiniz.

İlgili konular