SORU
2 Ocak 2009, Cuma


Uygun bir boyutlandırma UİLabel?

Nasıl aşağıdaki kod (bir tableView:cellForRowAtİndexPath: yöntem UİTableViewController) "09a - PrefsTable" tarifi iPhone Geliştirici yemek Kitabı Bölüm 6: . değişiklik olur

if (row == 1) { 
    // Create a big word-wrapped UILabel 
    cell = [tableView dequeueReusableCellWithIdentifier:@"libertyCell"]; 
    if (!cell) { 
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"libertyCell"] autorelease]; 
        [cell addSubview:[[UILabel alloc] initWithFrame:CGRectMake(20.0f, 10.0f, 280.0f, 330.0f)]]; 
    } 
    UILabel *sv = [[cell subviews] lastObject]; 
    sv.text =  @"When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation."; 
    sv.textAlignment = UITextAlignmentCenter; 
    sv.lineBreakMode = UILineBreakModeWordWrap; 
    sv.numberOfLines = 9999; 
    return cell; 
}

...boyut "sv" UİLabel küme ve "hücre" UİTableViewCell için boy yeterince büyük uygun metin (iş ve daha fazla veya daha az metin, ve diğer metin hizalama)? Ben UİLabel bu textRectForBounds baktı:limitedToNumberOfLines: yöntem, ama belgelere doğrudan denilen gerektiğini belirtir (geçersiz). Başarı olmadan UİView sizeToFit yöntemi ile denemiştim.

Güncelleme:I asked a new question about my problem with the NSString -sizeWithFont:forWidth:lineBreakMode: method.

CEVAP
18 Mayıs 2010, Salı


Benim için bunu yapmak için UİLabel uzattım bu kadar yapmak zorunda kaldım:

@interface UILabel (BPExtensions)
- (void)sizeToFitFixedWidth:(CGFloat)fixedWidth;
@end

@implementation UILabel (BPExtensions)


- (void)sizeToFitFixedWidth:(CGFloat)fixedWidth
{
    self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, fixedWidth, 0);
    self.lineBreakMode = NSLineBreakByWordWrapping;
    self.numberOfLines = 0;
    [self sizeToFit];
}
@end

sonra bir etiket değişken çok satırlı bir yükseklik ama sabit bir genişlik sadece olması için:

[myLabel sizeToFitFixedWidth:kSomeFixedWidth];

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Grace Su

    Grace Su

    6 Ocak 2006
  • iMasterful

    iMasterful

    11 EYLÜL 2009
  • Rootjunky.com

    Rootjunky.co

    22 EKİM 2011