2014-10-03 19 views
5

UICollectionViewCell içinde autolayout kullanıyorum. Süper basit düzen: sadece bir UILabel. UILabel'ın tam genişlik eksi 20 px'lik bir eki almasını ve hem dikey hem de yatay olarak hücreye odaklanmasını istiyorum. Sadece bunu yapan kısıtlamalar kurdum. Herhangi bir ios 8 cihazında veya simülatöründe çalıştırırsam mükemmel çalışır. Ancak, bazı ios 7 cihazlarda çalıştırdığımda kısıtlamaların bir etkisi yoktur. Apple belgelerine bakmayı denedim, ancak değişikliklerinin hiçbiri otomatik düzende görünmüyor. Bir cevap daha bir geçici çözümAutoLayout ios 8'de çalışıyor ancak ios 7'de çalışmıyor mu?

<constraints> 
      <constraint firstItem="OIc-cg-9hO" firstAttribute="leading" secondItem="Ga6-nx-lOn" secondAttribute="leading" constant="20" id="A7U-sd-fcL"/> 
      <constraint firstAttribute="centerY" secondItem="OIc-cg-9hO" secondAttribute="centerY" id="G9e-9W-aDS"/> 
      <constraint firstAttribute="centerX" secondItem="OIc-cg-9hO" secondAttribute="centerX" id="TrB-hI-7Kw"/> 
      <constraint firstAttribute="trailing" secondItem="OIc-cg-9hO" secondAttribute="trailing" constant="20" id="yjH-nf-D9U"/> 
     </constraints> 

Daha: Ben çok anlamı şüphe de aşağıda

XML kaynak kodu ama şöyle ben kodunda kısıtlamaları eklendi:

[self addConstraint:[NSLayoutConstraint constraintWithItem:self.cellName 
                 attribute:NSLayoutAttributeWidth 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:self 
                 attribute:NSLayoutAttributeWidth 
                multiplier:1.0 
                 constant:-20.0]]; 

[self addConstraint:[NSLayoutConstraint constraintWithItem:self.cellName 
                 attribute:NSLayoutAttributeCenterX 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:self 
                 attribute:NSLayoutAttributeCenterX 
                multiplier:1.0 
                 constant:0.0]]; 

[self addConstraint:[NSLayoutConstraint constraintWithItem:self.cellName 
                 attribute:NSLayoutAttributeCenterY 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:self 
                 attribute:NSLayoutAttributeCenterY 
                multiplier:1.0 
                 constant:0.0]]; 

amacıyla Çalışması için hem kodlanmış kısıtlamalara hem de IB kısıtlamalarına ihtiyacım vardı. Neden bilmiyorum!

+0

iOS 7'de hangi sonuç alırım? IOS 7'de çalışmaması gereken bu kısıtlamalarda hiçbir şey göremiyorum. – rdelmar

+0

UILabel, xib – user3534641

+1

'un tam yüksekliğine ve genişliğine sahip. Bende aynı ayar ve sorun var. Henüz bir çözüm var mı? – Ravi

cevap

5

Arayüz Oluşturucu kısıtlamalarınızın iOS7'de desteklenmeyen "Kenar Boşluğu" seçeneğini kullanması gibi görünüyor. IB'deki kısıtlamaları açın ve bunlardan herhangi birinin 'kenar boşluğuna göre' seçeneğinin işaretli olup olmadığını kontrol edin.

Kenar boşluğu ile ilgili daha fazla ayrıntı için What is "Constrain to margin" in Storyboard in Xcode 6 ve What is "Constrain to margin" in Storyboard in Xcode 6 adresine bakın.

+1

Bu seçeneği bile bulamıyorum, ancak xml – user3534641

+0

'da bir şey yok, bu da bana doğru yönde yol gösteriyor. –

4

Başıma gelen tüm kısıtlamaları kontrol etmelisiniz ve iOS 8 ile tanıtılan ve iOS 7'yi desteklemeyen Relative to Margin uygulamasını kaldırmanız gerekiyor. (UITableView hücreleri gibi).

bu seçeneği bulmak için: UI kontrolü Boyutu Komiserle

  • Git üzerinde

    1. dokunun

    2. Çift sadece kapatmak, herhangi kısıtlamayı tıklayın ve marj şeyi kontrol ve herhangi bir şey değişirse kısıtlamalarınızı düzeltin.

    enter image description here

  • İlgili konular