2016-07-08 22 views
7

arasındaki ayırt edici bir bulanıklık kenarının ortadan kaldırılması Şu anda, görünüm hiyerarşim bir UIViewController (NOT UITableViewController), görünüm denetleyicisine yerleştirilmiş bir UITableView ve UITableView'ın önüne bir UIVisualEffectView (Ekstra Işık olarak ayarlanmış) içerir. UINavigationBar'ın alt kısmı. Kazanmak istediğim etki, App Store'un bölümlere ayrılmış görünümüne benzer.UINavigationBar ile UIVisualEffectView

enter image description here

:

Ancak, (kırmızı daireyle vurgulanan) aşağıdaki resimde gösterilen gezinme çubuğunda ve görünümü tutarsız görünmesini sağlar UIVisualEffectView arasındaki sınırda meydana gelen garip bir bulanıklık kenar fark Optimal olarak, UIVisualEffectView'ın UINavigationBar'ın bulanıklığıyla mükemmel bir uyum göstermesini tercih ederim.

Teşekkürler.

+0

neden sadece düz bir renk arka planınız yok, ekran görüntüsünüz böyle görünüyor, arka planda hiç bir şey yok gibi görünüyor mu? – Wain

+0

Gezinme çubuğuna ve efekt görünümüne bir arka plan görünümü eklerseniz, bulanıklık efekti görünümünün ilk sırada olması noktasını geçersiz kılar. IOS 7 ve üstü sürümlerde, tablo görünümü aslında yarı saydam gezinme çubuğundan görülebilir. –

+2

Şu anda geliştirdiğim bir uygulamada aynı sorunu çözmek zorunda kaldım. Benim için, tabBar ve onun gezinti çubuğunun altına sabitlenmiş üst ve tablo bölüm başlıkları ekli bir blurView oldu. Çözüm UITabBar'ı saydam (NOT translucent -> NO background) yapmak ve blurBase'in kapladığı boşluğu doldurmak için blurView'i aşağı doğru genişletmektir. Çubuğun nasıl şeffaf hale getirileceğine ilişkin kod örneklerine ihtiyacınız varsa lütfen bize bildirin. :) - Korkarım ki UIBar'da UIVisualEffectViews ile kenarlarda birleştirmek için ayarlayabileceğiniz bir bayrak yok. Yine de, tahrif edilmeyi çok isterim. – Cabus

cevap

1

Resminize bakıldığında, sorununuzun UINavigationBar ile ilişkilendirilemeyeceği, ancak UISegmentedControl eklediğiniz yere baktığınız görülmektedir. deneyin

override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) { 
     var headerView: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView 
     header.contentView.backgroundColor = UIColor.clearColor() 
     return header 
} 
+0

böyle bir görünüm hiyerarşisi kullanılır: 'UINavigationController> UIViewController Tablo görünümünde üstüne (tablo görünüşüdür kontrol)> UITableView' (I, bir baz gibi standart' UIViewController' kullanılan için), bir ilave bir ' UIVisualEffectView, Extra Light olarak ayarlandı ve orada bir "UISegmentedControl" yerleştirildi. –

+0

Bunu yapmayı denedim, sorununuzu yeniden oluşturamıyorum, bir GitHub o Gist'i veya bir örneği var mı? –

1

:

Kod örneği: Ben senin yapısını bilmiyorum ama bu sorunu çözmek için tableHeaderView (self.tableView.tableHeaderView) bu yüzden makul bir yol olabilir başlık rengini değiştirmektir segmentin arka planı olarak UIVisualEffectView yerine UIToolBar kullanın. Gezinme çubuğu, bulanıklık efekti yerine saydam arka plana sahiptir. UIToolBar, gezinme çubuğuyla aynı şeffaf arka plana sahiptir, bu yüzden kenarda kesintisiz görünecektir.

+0

Bu ekranı ilk başta yaptığım sırada bir UIToolBar kullanmayı denedim, ancak maalesef 'UISoolBar' için UISegmentedControl öğesinin istenen uzunluğunu elde edemedim (bölümlendirilmiş denetimi araç çubuğuna 16pts ile sığdırmak istiyorum sol ve sağ kenarlarda solda). Bu yüzden bir UIVisualEffectView ile yerleşme sona erdi. –

+0

'UIVisualEffectView', yarı saydam bir gezinme çubuğuyla aynı görsel görünüme sahip olmadığından, ihtiyaçlarınızı asla karşılayamayacaktır. Bir araç çubuğunda "UISegmentedControl" öğesini boyutlandırmak için çaba harcamayı düşünebilirsiniz. Bir yol kontrolü kontrol etmek için her iki tarafta esnek bir aralayıcı kullanacak, ardından kod için doğru boyutu ayarlayacaktır. – Fujia

İlgili konular