2016-03-21 14 views
6

Yardımcı olmaya başladığım bir proje, Otomatik Düzenlemeyi daha önce kullanmadı ve Otomatik Düzenleme ve boyut sınıflarını kullanmak için güncellemeyi yapıyorum. Uygulama boyunca makul miktarda çerçeve işleme kodu var (örneğin, kısıtlama sabitlerini değiştirmek yerine doğrudan kareyi ayarlama) ve bunun Otomatik Düzenleme kısıtlamaları ile oluşturulmuş bir görünümü nasıl etkilediğini merak ediyorum.Otomatik Düzen ile IB'de bir görünüm ayarlanmışsa, çerçevesini programsal olarak değiştirmeye çalışırsanız ne olur?

Kodun çerçeve kısımlarını değiştirmeye çalışıyorum ve gerektiğinde kısıtlama sabitlerini güncellemek için değiştiriyorum, ancak kodun her parçasının nasıl çalıştığını henüz bilmediğim için bu ' Otomatik düzen ve kodlanmış çerçeve değişikliklerinin birbirini nasıl etkileyebileceğine dair daha iyi bir anlayışa sahip olmak, böylece bir görünüm çalışma zamanında düzgün görünmüyorsa, kurduğum bir şey mi yoksa belki de eski bir kod parçası mı olduğunu daha iyi anlayabilirim bulunması ve güncellenmesi gerekiyor.

+2

Genellikle çerçeve, kısıtlar tarafından tanımlanan kareye yeniden ayarlandığında, değişiklik bir sonraki düzene kadar çalışır. Bazen düzen hemen gerçekleşir, böylece değişiklik aslında görünmez. – Sulthan

+0

Eğer autolayout kullanan bir görünümde çok fazla çerçeve manipülasyonu yapıyorsanız bu bir karmaşa olabilir. Böyle bir görevi bir kez yaptım ve kodun çoğunun hiçbir şey yapmadığını (çerçeveyi değiştirmeye çalışırken), çalışma zamanı çerçevelerdeki işlemlerin çoğunu görmezden geliyordu. – azimov

+0

@Sulthan, zaman zaman kazandığım garip sonuçlardan bazılarını düşünürken çok anlam ifade ediyor. Teşekkürler! – bluewraith

cevap

8

Çok basit. Otomatik düzen 'un olduğunu anlamalısınız.

İşte nasıl çalışıyor. Kısıtlamalar sadece bir talimat listesidir; Kendileri, aslında hiçbir şey yapmazlar. Kontrol etmediğiniz anlarda gönderilen bir sistem mesajı layoutSubviews var, bu yüzden herhangi bir zamanda gönderilebileceğini hayal etmelisiniz. layoutSubviewsgerçekte gönderildiğinde, kısıtlamalara başvurulur ve uyulur (tam olarak ne yapacağınız - yani çalışma zamanı, her görünümün frame veya bounds ve center değerini ayarlar).

Böylece, bir bakış frame değişebilir ama layoutSubviews gönderilir ve kısıtlamaları ayarlamak frame katılmıyorsanız, görünüm geri kısıtları söylemek yere atlama koymak olacağını unutmayın özgürdürler o.

+0

Mükemmel, teşekkürler! Bu, bazı durumlarda geri aldığım bazı kabataslak sonuçları açıklıyor. – bluewraith

İlgili konular