2015-11-24 11 views
5

Otomatik satır yükseklikleri ve özel UITableViewCell ile UITableView var. UITableViewCell'un içinde, önce programatik Autolayout kısıtlamalarına sahip bazı UIButton s ekledim. İstediğim kadar mükemmel konumlandırılmışlar. Sonra, 3 saniye sonra (NSTimer), tüm bu UIButton s kaldırmak ve tekrar tekrar farklı bir sayı ekleyin. (Eg için başlangıçta ben 4 UIButtons, 3 saniye sonra, ben bu 4 UIButton s kaldırmak ve 3 farklı yenilerini eklemek zorunda BaşlangıçtaProgramatik Otomatik geçiş, UITableViewCell içindeki değişiklikler yalnızca yönlendirme değiştirildikten sonra güncelleştirilir

.

Initially 3 saniye sonra:

3 seconds later

Döndür döndürme:

enter image description here

Bu neden oluyor? Herhangi bir Otomatik Mesaj uyarısı görmüyorum. Ayrıca, bir yönelim değişikliğinden sonra, her şey doğru bir şekilde konumlandırılmıştır. Oryantasyon değişikliği gerektiren nedir? Ben setNeedsUpdateConstraints, layoutIfNeeded, layoutSubviews kullanarak çalıştı ama boşuna:? Nasıl

PS (bunu yapmak için çok fazla görünüyor sadece için tableView yeniden) elle zorlayabilir.

İşte UITableViewCell kodu: http://pastebin.com/TcHUXgDU. (Bu alanı kirletmemek için bir macun macunu ekledi) Ama temel olarak, cellForRowAtIndexPath'un UITableView'u içerdiği, benim tablo görünümü alt sınıfım içinde bulunan bir configure: yöntemi var. Bu yöntem bu kısıtlamaları ekler. Ayrıca, zamanlayıcı tetiklendikten sonra, eklediğim öğelerin sayısının öğelerin başlangıçtaki sayısından farklı olması dışında aynı kod (başka bir işlevde) çağrılır. Bu benim UITableViewCell düzenidir

:

uitableviewcell layout

+0

hücresinin yüksekliği bir kod gönderebilir mi? ve yönlendirme öncesinde hücrenin yüksekliğinin değiştiğini görebilirim, bu da düğmelerin dolguya sıkılmasını sağlarken, yön değiştirme, hücrenin yüksekliğini değiştirerek tamamlamayı sağlar. –

+0

Bazı kodlar yayınladım. Ayrıca, yönlenmeden önce, hücre yüksekliği tüm 3 hücre için sabittir. (söyleyeceğiniz gibi değil) –

+0

Sorunuzu yanıtlamıyor, ancak [Kitaplık] gibi bir kitaplık kullanıyorsanız, programlı olarak otomatik programlamayı uygulayarak çok daha güzel bir süreye sahip olacaksınız (https://github.com/SnapKit/Masonry) – sjwarner

cevap

0

Sen UITableView yeniden ihtiyaç (Sadece üst, alt, sondaki kısıtlamaları UIView "Outerview" eklendi lider), bu edecektir yeniden caculate

+0

Evet, uitableviewcell mizanpajı yüksekliğine sahip bir pankreas gibi, ama uitableviewcell mizanpajındaki güncellemeleri zorlamak için daha ucuz bir yol olup olmadığını merak ediyordum. –

+0

- (void) reloadRowsAtIndexYollar: (NSArray * _Nonnull) indexRedAnimasyonluYollar: (UITableViewRowAnimation) animasyonu. UITableView'ın dokümanı kontrol edin – yanyabo111

+0

Sonuçta tablonun yeniden yüklenmesi tamamlandı –