sizi varsayarsak kullanıyoruz Autolayout, alanın gizlenmesi, fark ettiğiniz gibi, içerdiği alanı doldurmaz. Bu alan boş bırakılır.Görünümden kaldırıldığında, her türlü rastlantısal şeyler meydana gelir.
İşte bu görevi nasıl yapacağım Autolayout ile alanı doğru bir şekilde doldurmak istediğinizde (örneğin, View A, B Görünümünün üzerindeyse, View B'nin üstünü x kenar boşluğu olarak ayarlayın om A'yı görüntüleyin.) Sonra görünümü gizleyebilir ya da saklayamazsınız (genellikle akıl sağlığı için yapıyorum) ve en önemli kısım Görünüm A'nın yüksekliğini 0 olarak ayarlamamdır. Genelde bunu, Görünüm'deki sabiti manipüle ederek yapıyorum. A yüksekliği sınırlaması, ancak yüksekliğiniz 0'a gittiği sürece yüksekliği de 0 olarak değiştirebilirsiniz.
Eğer Autolayout'u doğru şekilde ayarladıysanız, bu, boşluğu doldurmak için yukarıdaki veya altındaki tüm görünümleri doğru bir şekilde hareket ettirecektir. Görüşlerinizi birbirinizle nasıl ilişkilendiriyorsunuz? Herhangi bir sorunuz olursa haberim olsun.
Düzenleme: Bu nedenle, genellikle bir kısıtlama gizleyeceğimi biliyorsam, genellikle yükseklik sınırım için bir mülkte kalacağım, bu yüzden genellikle yapacağım şey (A görünümünü gizlemek için):
viewA.hidden = YES;
heightConstraint.constant = 0;
[viewA setNeedsDisplay];
sadece yüksekliğini değiştirmek için:
viewA.hidden = YES;
CGRect newFrame = viewA.frame;
newFrame.size.height = 0;
viewA.frame = newFrame;
[viewA setNeedsDisplay];
setNeedsDisplay
çağrısı gereksiz olabilir, ama aslında o kadar emin değilim bu okullara yardımcı değilim, sana bunu gerektiğini düşünüyorum senaryo 1 ve senaryo 2'de buna gerek yok.
Ayrıca, bu şekilde kutunun dışında çalışabilmeniz için View B'nin, A'yı üstten veya alt kenarına sabitlenecek şekilde ayarlandığından emin olmanız gerekir; böylece, geride kalan alanı otomatik olarak dolduracaktır. Autolayout'u kullanmıyorsanız, View B için doğru çerçeveyi kendiniz hesaplamanız ve View A'yı gizledikten sonra ayarlamanız gerekir.
iOS 9'u hedefliyorsanız, UIStackViews; Bir öğe gizlendiğinde otomatik olarak ayarlanırlar, aksi takdirde kısıtlamalarınızı manipüle etmeniz gerekir ki gizli öğenin sıfır yüksekliği – Paulw11
otomatik düzende çalışıyor mu? –
UIStackView kullanarak, düzeltildi. Paulw11 –