Birkaç gün boyunca bu soruyla kendimi hayal kırıklığına uğrattım. UITabel'ı bir UITableViewCell'e eklemeye çalışıyorum. UILabel'ın hücrenin tüm genişliğini, görünüm için sağ ve sol taraftaki eksi 5 veya 10'u geçmesini istiyorum. Sorunum, etiketin yerleştirileceği hücre çerçevesinin boyutunun programatik olarak belirlenmesidir. Hangi UITableViewStyle kullandığımı farketmez, cell.contentVew.frame.size.width değeri, hücre çerçevesinin kendisinin genişliğine yakın değildir.Bir UITableViewCell çerçevesinin geri alınması
CGRectMake(10, 12, 397, self.contentView.frame.size.height);
Ama sanki:
Örneğin, ben inşa ediyorum tabloda, ben tarafından (sadece deneme yanılma yoluyla) UITableViewCell sınıflara ve bir elle tespit genişliğe sahip bir UILabel oluşturarak benim istenen sonucu elde edebilirsiniz 397 numara beni rahatsız ediyor. Herhangi bir genişlik tablosu veya stili için ne olması gerektiğini programlı olarak belirlemenin bir yolunu istiyorum. Bu sadece hücrenin tüm çerçevesinin genişliğini belirleyerek ve daha sonra 10 veya 20 çıkararak basit bir işlem olmalı, böylece UILabel'ın kenarları hücrenin kenarına dokunmuyor. Denemek sonra UITableViewStyleDefault için tableViewStyle ayarlarsanız ve
Ancak:
NSLog(@"Width: %f", self.contentView.frame.size.width);
Ben, diğer üç stilleri herhangi birine stili ayarlamak ben 320 olsun, döndürülen sayı bile 320 302. olduğunu sayı, hücre çerçevesinin genişliğine yakın bir yerde değildir (manuel olarak belirlenen 397 sayısına göre).
Hücrenin çizim çerçevesinin tüm genişliğini döndürecek erişime hangi değere ihtiyacım var? Eminim, çoğu sinir bozucu problemde olduğu gibi, çözüm beni alnımda tokatlamak isteyecektir, ama şimdi hazır olduğum noktaya geliyorum. Daha fazla bilgi için
DÜZENLEME: ilgilenen herkes için
Bir açıklama. Bu benim sorusu öncelikli olarak Gruplandırılmış bir tabloya ait.
CGFloat cellWidth = [tableView rectForRowAtIndexPath:indexPath].size.width;
I having rectForRowAtIndexPath yöntemi hücresi olduğu çerçevenin genişliğini döndürür olmasıdır: Düz stil, yukarıda benim sorunun cevabı ile cellForRowAtIndexPath yönteminde kolayca tespit edilebilmektedir çizilmiş olan, düz bir tablo için iyi, çünkü hücre genişliği çerçevenin tüm genişliği. Ancak, gruplandırılmış bir tabloda, hücrenin genişliği, çizildiği çerçevenin genişliğinden daha azdır, bu nedenle bu yöntem, hücrenin genişliğinden biraz daha geniş bir sayıyı döndürecektir. Gruplandırılmış bir tablo stilindeki hücrenin genişliğinin, tablo çerçevesinin genişliğinden daha az sabit bir sayı olması olasıdır, bu nedenle sorunu çözmenin yolu bu olabilir. Bu soruyu araştıracağım ve eğer durum buysa kendi sorumu yanıtlayacağım.
Harika bir soru Ben aynı davranışı alıyorum ve beni deli ediyor. Çözümüm çerçeve boyutu hakkında düşünmemek ve yalnızca içerik görüntüleme boyutunun yüzdesi olarak alt görünümler genişliğine başvurmaktı.İçerik görüntü çerçevesinin, aksesuarlar için ayrılan hücrenin solundaki ve sağındaki alanları (taşıma, silme, ifşa etme, vb.) Hariç tuttuğuna eminim, ancak yine de hücre çerçevelerinin neden her zaman yanlış boyutu bildirdiği konusuna cevap vermiyor. . Umarım birisi gelecek ve tüm bunları anlayacaktır. – Rog
Bu manzarada mı? –
@Bartosz - Örneğimde portreden numara alıyorum. – Chris