2013-03-31 26 views
5

'daki çerçeveyi değiştiremiyorum iOS6 için bir uygulama geliştiriyorum. Bazı UILabels ve bazı UIImageViews içeren storyboard başlatılan dinamik hücreler var. Onlar için yükseklikler anında değişebilir. Sorum Böyle cellForRowAtIndexPath çerçeveyi değiştirdiğinizde geçerli:Storyboard'dan bir UILabel yükleyin, cellForRowAtIndexPath

contentText = (UILabel *)[cell viewWithTag:TAG_TOPIC_CONTENT_TEXT]; 

CGFloat height = [[self.contentHeights objectAtIndex:[indexPath row]] floatValue]; 

contentText.frame = CGRectMake(CELL_TOPIC_CONTENT_X, CELL_TOPIC_CONTENT_Y, CELL_CONTENT_WIDTH, height); 

ekranda gösterilen contentText UILabel yüksekliği hala Film Şeridi'nde başlatıldı ne aynıdır. Değişiklik işe yaramıyor gibi görünüyor. UITableView'umu yenilediğimde, contentText'in yüksekliği sorunu nasıl çözecek? Şimdiden teşekkürler!

+0

Neden heightForRowAtIndexPath kullanılmıyor? –

+0

@Bhargavi Anladığım kadarıyla, bu işlev hücrenin yüksekliğini değiştirmek için kullanılır, fakat sorum uetrafin – Tate

cevap

0

Bunu, tableView:willDisplayCell:forRowAtIndexPath: yöntemiyle yapmayı deneyin. Bu, UI özelleştirmeleri için genellikle kullanılan yöntemdir. Bu yardımcı olur umarım! Eğer hücrenin çerçevelerin herhangi değiştirmek gerekiyorsa

+0

uzunluğunu değiştirmek için sadece tablodaki contentText çerçevesini ayarlamayı denedimView: willDisplayCell: forRowAtIndexPath ve sonra contentText uilabel'i cellForRowAtIndexPath ve çerçeve doğru, ancak hala ekranda yanlış görüntülenen bir konum, ben bir şey eksik miyim? – Tate

+0

Doğru, bu, bu konuda yardımcı olmuyor. – Legoless

0

, o zaman UITableViewCell bir alt sınıfını oluşturmak ve uygulamak layoutSubviews yöntemi olmalıdır:

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    // modify frames here 
} 
+0

Çalışma süresi boyunca boyut değiştirilirse, layoutSubviews'a nasıl iletebilirim? Veya layoutSubviews gerçek değeri bildirmek için herhangi bir yolu var mı? – Tate

+0

sabit çerçeve ile çalıştı, başlangıçta çalışma görünmüyor, çerçeve – Tate

0

Ben onun sinir bozucu biliyorum, ama ben de bir çözüm bulamadık söyledi. Bunun yerine, kendileri için çalışmayı beklediğim gibi işler yapmak için kendime bir geçici çözüm buldum. Ben

Daha sonra "Otomatik Düzen" (Film Şeridi 'nde Onay Kutusu) kaldırıldığını: Ayrıca

[self.label setText:@"Labeltext"]; 
[self.label setBackgroundColor:[UIColor orangeColor]];// just to make the frame visible 
[self.label setNumberOfLines:0]; 
[self.label sizeToFit]; 

çekicilik gibi çalışır, ancak:

self.label.frame = CGRectMake(0, 0, 50, 50); 

Yani, don eğer AutoLayout'a ihtiyacım var (benim için işaretlediğim ilk şey) ondan kurtulmak.

+0

görüntülendikten sonra beklediğim şeye değişecektir Ben korkuyorum autolayout unchecked farklı ekran boyutuna adapte edemiyorum – Tate