2015-09-29 15 views
8

ile içeriğinin boyutuna bir XIb'nin kök görünümü yeniden boyutlandırmak ve bir subview basit bir görünüm ekleyin:Dinamik Xcode bir XIB'ye oluşturmak autoLayout

XIB with rootview and subview

Ne elde etmek istiyorum Subview olmasıdır sabit bir boyuta sahiptir ve rootview otomatik çevresinde 20.0 bir kenar boşluğu bırakılarak, bu subview ait boyuta getirilir:

Resized XIB

Yani subvi için sabit bir genişlik ve sabit bir yükseklik kısıtlaması ekleyin ew. Sonra 20.0 farkıyla ilgili dört kısıtlamaları ekleyin:

Constraints View showing constraints

Superview herhangi bir kısıt olmadığından ne belirsizlik ne de çelişkili kısıtlamalar olmalıdır: Ben amacıyla küçülteceğim Superview beklenir kısıtlamaları eşleştirin. Ancak, Xcode yakınır: rootview sabit bir boyuta vardı ve bu durumda olması görünürse

Warnings

Bu kısıtlamalar sadece çelişkili olurdu. Bu yüzden benim sorum: XIB esnekliğinin kök görünümünü nasıl oluşturabilirim? dinamik içeriğini maç için kendi boyutunu ayarlar böylece

(Interface Builder ile bile mümkün mü?)

+0

Bu problemi olan herkes, lütfen endişelenmeyin. XIB hatalarını bastırmak için sadece görünümün uygun boyutunu ayarlayın. Ardından görünümü oluşturduğunuzda, kısıtlamaları otomatik olarak karşılayacak şekilde yeniden boyutlandırılacaktır. – kelin

cevap

4

nasıl XIB'nin rootview esnek hale getirebiliriz?

Yoktur Arabirim oluşturucu. Superview herhangi bir kısıt olmadığından

belirsizlik ne de çelişkili kısıtlamalar

Onun sadece bir süper görünümü ne olmalıdır. Onun aynı zamanda ucunda bir objet. Bu görünümler için simüle büyüklüğü tanımlarız. Bu hataları susturmak için kullanılabilir. Ama yine de bunlar sadece simüle edildi.

Bu kök görünümünde Görünüm denetleyicileri nasıl görünüyor? Eğer evet anlamıyorum neden onun withd'yi 280 ve yüksekliği 168'e düzeltmeye çalışıyorsunuz?

Bu görünüm başka bir 'ebeveyn' görünümüne ekleyeceğiniz özel bir görünümse. O zaman simüle edilmiş boyutu 280 ve boy 168 ile değiştirmelisiniz ve bunu subview olarak eklediğinizde, bu ana görünümü 'ana' görünümde konumlandırmak için iki tane daha kısıtlama eklemeniz gerekir.

+0

Şey: Kök görünümün bir tablo görüntüleme hücresi olması gerekiyordu ve eğer otomatik olarak kullanmak istediğimde, ilk önce kısıtlamalara uyum sağlamak için root görünümüne ihtiyacım var, böylece çerçevenin yüksekliğini elde etmek için çerçevenin yüksekliğini alabiliyorum. tableView: heightForRowAtIndexPath: 'yöntem. – Mischa

+2

Cevabınız için teşekkürler! Bunun neden mümkün olmadığını merak ediyorum ... – Mischa

+0

Bu yolla hücre boyunu almaya çalışıyorsanız. Yanlış yöndesin. – BangOperator

0

Ben

self.yourViewController!.view.translatesAutoresizingMaskIntoConstraints = false 
+0

Hayır, çünkü: 1) Benim sorum olarak bir UIViewController' değil, bir UIView' için atıfta bulunuyordum. 2) Bu kod, sadece IB_DESIGNABLE view ** controller ** gibi bir şey olmadığından Interface Builder'da değil, çalışma zamanında etkili olacaktır. 3) @BangOperator, Interface Builder * yanıtında belirttiği gibi * her * IB dosyasının kök görüntüsü için sabit bir çerçeve kullanır, XIB veya bir storyboard olabilir. – Mischa

0

Bir yükseklik kısıtlamasına örneğin elle xib düzenleyerek bunu yapabilirsiniz (benim durumumda bir eşitsizlik olduğunu sen bütün konteyner için otomatik yeniden boyutlandırma maskesini kurmayı unuttuğu düşünüyorum) minimum yüksekliği ayarlayın:

  1. bir metin dosyasına
  2. olarak xib açmak yüksekliği için bir subview bir kısıtlama eklemek kısıtlamasını bulmak bir dded
  3. kesim ve kök görünümün kısıt bölümünde
  4. Açık tekrar arayüz oluşturucudaki xib
  5. kısıtlama görünür ve düzenleme yapabilirsiniz yapıştırın (yükseklik değerine Cmd-f'ing suretiyle) normal gibi.
İlgili konular