Nasıl iOS7 UİNavigationBar 1px alt satırı gizle
Bazen bir navigasyon çubuğu içeriği ile uyum sağlamak için gereken bir uygulama var.
Herkes bu can sıkıcı küçük bar rengini değiştirmek kurtulmak için nasıl biliyor mu?
Durum aşağıdaki resim üzerinde var - bu 1px yükseklik çizgiyi hakkında aşağıda konuşuyorum"" . Kök Görünümü Denetleyicisi
CEVAP
Bunu yapmak için, özel gölge bir resim ayarlamanız gerekir. Ama gösterilecek gölge resim için ayrıca Apple'ın belgelerine özel bir arka plan görüntüsü, bir alıntı için:
Özel gölge bir resim gösterilmesi için, özel bir arka plan görüntüsü olmalı ayrıca setBackgroundİmage ile ayarlanması:forBarMetrics: yöntem. Eğer varsayılan arka plan görüntüsü, varsayılan gölge görüntü kullanılır bu özelliğin değeri ne olursa olsun kullanılabilir.
Bu yüzden kodu:
UINavigationBar *navigationBar = self.navigationController.navigationBar;
[navigationBar setBackgroundImage:[UIImage imageNamed:@"NavigationBarBackground"]
forBarPosition:UIBarPositionAny
barMetrics:UIBarMetricsDefault];
[navigationBar setShadowImage:[UIImage new]];
Bu kod resim "" bar arka plan olarak.NavigationBarBackground adlı istediğinizi varsayar
Eğer öyle değilse,arka plan düz bir renk yapabilirsiniz[UIImage new]
backgroundImage
ayarı ve renk navigationBar.backgroundColor
atayarak senin gibi.
Sadece yukarıdaki "resmi" bunu saklamanın en iyi yolu. Ama ne yazık ki bar kalınlığı kaldırır.
Nasıl bar şeffaf tutmak için mi?
Başka bir yaklaşım gerekir saydamlık tutmak, kesmek gibi görünüyor ama iyi çalışıyor. Kaldırmak için çalışıyoruz çizgisi UIImageView
yere UINavigationBar
altında. Onu bulmak ve gerektiğinde ya da gizlemek göstermek zorundayız.
Örnek değişken ilan ilk:
@implementation MyViewController {
UIImageView *navBarHairlineImageView;
}
Daha sonra viewDidLoad
:
navBarHairlineImageView = [self findHairlineImageViewUnder:navigationBar];
Görüntü bulduğu yöntem ihtiyacımız görünüm:
- (UIImageView *)findHairlineImageViewUnder:(UIView *)view {
if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) {
return (UIImageView *)view;
}
for (UIView *subview in view.subviews) {
UIImageView *imageView = [self findHairlineImageViewUnder:subview];
if (imageView) {
return imageView;
}
}
return nil;
}
Ve bu sihirli dinlenme yapacak:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
navBarHairlineImageView.hidden = YES;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
navBarHairlineImageView.hidden = NO;
}
Aynı yöntem, aynı zamanda UISearchBar
saç çizgisi için çalışması gerekir.
Çok teşekkürler @Leo orijinal fikir için Natan!
Nasıl Node.js komut satırı geçmesi?...
Nasıl PostgreSQL komut satırı yardımcı...
Nasıl komisyon bir görev için komut sa...
Nasıl bir toplu iş dosyası komut satır...
Nasıl bash komut satırı argümanları ay...