2016-04-13 26 views
0

Ekranı dolduran, ancak kullanılabilir alanının üst yarısına (alt kenar düzeni marjı ile) sınırlı bir harita görünümüne sahip olmasını ve böylece haritanın alt kısmının görsel efekt görünümünün altına uzanmasını istiyorum Yarım ekran yüksekliğinde ekranın altına tutturulmuş olan bir tablo içerecektir. Aynı şekilde genellikle yukarıda ve araç çubuklarının altında uzanır. Yerleşim düzenini ayarlama Otomatik düzenini kullanarak kareler

şöyle ben kodda layoutMargins özelliği ayarlayabilirsiniz Bunu başarmak için: Ben nedeniyle marjları otomatik olarak güncellenir, böylece yerine bir oto-düzen kısıtlaması ile bunu istiyorum Ancak

self.mapView.layoutMargins = UIEdgeInsetsMake(0, 0, self.view.frame.size.height/2, 0); 

örneğin bir ekran döndürme nedeniyle boyutu değiştirme. Bunun mümkün olup olmadığını bilen var mı? Ve eğer öyleyse, belirli yerleşim kısıtlamalarını IB'de veya kodda nasıl ekleyebiliriz? NSLayoutAttributeBottomMargin kullanımını gerektirebileceğine inanıyorum. Teşekkürler. Yukarıdaki ekran görüntüsünde

Screenshot

, bölgeye İngiltere'ye kurmak ve harita görünümünün kullanılabilir bölümünü doldurur olmuştur görebilir ve ayrıca sol alt Yasal etiketi görebilirsiniz doğru olduğunu yer. Bunlar, harita görünümünde layoutMargins özelliğini kullanmanın yararlarından bazılarıdır.

Storyboard constraints

cevap

0

Arayüz oluşturucu olarak, sadece Ardından Görsel Efekt kenarlarına ve alt pin olabilir 0 bir marj kullanarak Superview kenarlarına sizin harita görünümü kenarlarını pin yanlarına görüntüleyip 0'ın kenar boşluğunu kullanarak superview'in alt kısmı. Sonra Görsel Efektler görünümü için bir üst kısıtlama oluşturun (herhangi bir sayı varsa kullanın. Bunu değiştireceksiniz.)

VFX görünümünüzün denetçisinde en üst sınırlama "İkinci Öğe" yi "Merkez Y" olarak değiştirebilirsiniz. Bu, en üst noktanızın artık dikey merkezin süper görüntülerinin merkezine sabitlendiği anlamına gelir. Bu, Görsel Efekt görünümünü daima ekranın alt yarısına sabitlenmiş halde tutmalıdır.

+0

Cevabınız için teşekkürler, ancak bu benim sorunuma cevap vermiyor. Efekt görünümünü ekranın alt yarısına sabitleyen bir sorunum yok. Haritanın alt yerleşim kenar boşluğunu görsel efekt görünümünün veya kenarının üst kenarına sabitlemeye çalışıyorum. – malhal

+0

Özür dilerim, soruyu çok çabuk gözden geçirdi. Düzenleme kenar boşluklarını IB'de Beden Müfettişi'nin altında açıkça ayarlayabilirsiniz, ancak daha dinamik bir şey aradığınız anlaşılıyor. Böyle bir durumda boyut sınıflarını kullanmayı düşünürdüm. Yüksekliği, ihtiyacınız olduğu kadar çok sayıda dönüşle açıkça ayarlayın ve boyut sınıflarının dönüşü ve yeniden boyutlandırmasını sağlamasına izin verin. – BendE

+0

Bu ayarı denedim ancak herhangi bir etkisi yok ve evet marjın açık bir değer değil bir kısıtlama olmasını istiyorum. – malhal

0

Kendi sorumu yanıtlama! LayoutMargins için IB'de bir kısıtlama ayarlamak mümkün görünmüyor, ancak layoutMargins için bir giriş ekleyerek ve CGRect'in bir türünü kullanarak Kullanıcı Tanımlı Runtime Öznitelikleri ayarlamak mümkündür ve sadece alt kenar boşluğunu genişlik paramı olarak koymak mümkündür. Biz dinamik bir düzen ihtiyaç Ancak çözüm kodunda aşağıdaki koymaktır: Süper ama Apple do it in this sample da çağıran bir boş olmayan param alır nil ile bir yöntemi çağırmak için kötü görünüyor

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self viewWillTransitionToSize:self.view.bounds.size withTransitionCoordinator:nil]; 
} 

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{ 
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; 
    self.mapView.layoutMargins = UIEdgeInsetsMake(0, 0, size.height/2.0, 0); 
} 

.

Bunun her zaman işe yaramadığı bir durum var. Manzaradan resme ve tekrar tekrar çok hızlı geçiş yaparsanız, kenar boşlukları güncellenmez. Ancak UIKit bu gibi böceklerle doludur, bu yüzden sadece gitmesine izin vermelisiniz.

İlgili konular