2015-04-10 18 views
12

Garip bir davranışa rastladım, burada UITableView'a eklenen hücreler bazen sol tarafa girintilerdi. Bu sadece iOS 8.3'te gerçekleşir ve bunun ne zaman gerçekleşeceğine dair net bir model bulamıyorum.iOS 8.3 - UITableView hücresi hizalı değil, soldaki girinti

Aynı şeyi yaşayan herkes? Eh

+0

Aynı şeyi yaşıyorum .. http://stackoverflow.com/questions/29824830/has-anything-changed-with-custom-uitableview-prototype-cells-constraints-since-i – mm24

cevap

6

- Bu garip geliyor ...

Bazen UITableViewCellContentView 'ın contentViewUITableViewCellContentView kendisi ile uyumlu olmadığı görülmektedir. Bu, UITableView'un kendi başına, ekrandan daha geniş bir düzenin parçası olduğunda gerçekleşir (yatay çağrı durumunda olduğu gibi).

Neyse ki, çözüm basittir: contentView'u ebeveyniyle hizalamak için bir kısıtlama ekleyin. Bu, yalnızca düzenleyici programdaki contentView kısıtlamalarını düzenleyemediğinizden programlı olarak yapılabilir.

- (void)awakeFromNib { 
    // Initialization code 

    // iOS 8.3 bug, where contentView's x position isnt aligned with self's x position... 
    // So we add a constraint to do the obvious... 
    [self addConstraint:[NSLayoutConstraint constraintWithItem:self.contentView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f]]; 
} 

Bu yalnızca iOS 8.3 oluyor başladı ama düzeltme yanı güvenli ve önceki sürümlerine geriye doğru uyumlu olacak gibi görünüyor.

Her zaman olduğu gibi - lütfen kendi deneyiminizle yorum yapın.

+1

Nasıl keşfettiğinizden emin değil misiniz? Bu, ama bunun için çok minnettarım. Masa hücrelerimin çoğu tuhaf görünüyordu ve nedenini bilmiyordum. Bu hepsini sabitledi. Teşekkürler! –

+0

Mutlu Biraz yardım edebilirim. – Vaiden

+0

Bu yüzden 8.3 SDK'yi kullanırken ve 8.2'de bir iPad'e yükseltme yaptığımda bu sorunu düzelttiğimi fark ettim. Başka fikirlerin var mı? –

3

layoutMargins özelliği nedeniyle görünüyor. Kısıtlayıcı ikinci maddesim "Kenar boşluğuyla ilgili" işaretini kaldırdım ve her şey harika çalıştı. İşte article.

+0

Girdi için teşekkürler. Ancak marj kısıtlaması yoktu ve sorun iOS 8.3 ile başladı. – Vaiden

0

Üzerinde çalıştığım bir uygulama ile bu sorunun bir varyasyonunu gördüm. Yanlış lider/takip eden hizalamaya sahip bazı tablo görüntüleme hücreleri görüyoruz.

iOS 8.3'e bağlı değil, yalnızca Xcode 6.3 ile oluştururken oluşur. Aynı projeyi alıp Xcode 6.2'de yapılandırabilirim ve oluşmuyor. Bazı araştırmalardan sonra, bunun sadece xibs'teki tablo görüntüleme hücrelerinde meydana geldiği anlaşılmaktadır.

Çözüm, önceliği/sondaki kısıtlamayı marjlarla kaldırmak ve bunları doğrudan süper görüntülemeye (yani hücre içeriği görünümü) ayarlamaktır.

+0

Bu, o zaman farklı bir sorun olmalı. I (OP) rapor ettiğim sorun, derlenmiş ve XCode 6.2'den gönderilen uygulama sürümümüz kullanılarak iOS 8.2'den 8.3'e yükseltilen kullanıcılar tarafından deneyimlendi. – Vaiden

13

TabloViewCells, önceki sürümlerinde görmediğim iOS 8.3'te çalıştırıldığında artan sol ve sağ kenar boşlukları görüyordu.

Ayar:

self.contentView.preservesSuperviewLayoutMargins = NO; 

8+ sorunumu sabit ve tüm sürümlerinde tutarlı benim marjlarını tuttu ama iOS'ta sadece bu unutmayın.

- (void)awakeFromNib { 
    if ([self.contentView respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) { 
     self.contentView.preservesSuperviewLayoutMargins = NO; 
    } 
} 
+1

Bu benim için mükemmel çalıştı. Sadece 'awakeFromNib' ise (eğer cevap verirseToSelector) 'kontrol edilir ve ekstra girinti durdu. – Stonz2

+0

Aynı şeyi yaşıyorum! Hikaye panosunu kullanmazsam nasıl düzelteceğimi söyler misiniz? self.tableView = UITableView (çerçeve: CGRectMake (0, 0, self.view.frame.size.width, self.view.frame.size.height), stil: UITableViewStyle.Plain) self.tableView! .delegate = öz self.tableView .dataSource = öz self.tableView .registerClass (UITableViewCell.self, forCellReuseIdentifier: "hücre")! Teşekkür – webmastx

+0

Bu iOS 11'de bir tableView UI aksaklık test ederken ben bir sorun ile yardım ettiğini iOS 10'da da yoktu. Teşekkürler! –

0

Bu sabit benim için: Bunu barındırmadığını

Yani burada, örneğin, olduğunu. UITableViewCellimageView ve çıkışlarıma yeniden bağlanan textLabel özelliklerini kullanmayı bıraktım.