SORU
26 EYLÜL 2013, PERŞEMBE


iOS7 UİTextView contentsize.yükseklik alternatif

İOS uygulamaları iOS 7 için 6.1 birini taşımaya çalışıyorum. Düzeltme genişliği olan UITextView bir yerde bir düzen kullanıyorum, ama yüksekliği contentsize dayanmaktadır. İçin 6.1 contentsize kontrol iOS.yükseklik ve textview çerçeve yüksekliği ayarlamak için yeterli ama yine de iOS 7 üzerinde çalışmıyor.

O zaman nasıl sabit genişlik UITextView ama dinamik bir yükseklik metin oluşturmak gösteriyor olabilir miyim?

NOT: Interface Builder ile kod değil. bu görüşler yaratıyorum

CEVAP
28 EYLÜL 2013, CUMARTESİ


Bu aşağıdaki kod ile, sizin UİTextView yüksekliği sabit bir genişlik (ve bir önceki sürüm iOS 7 üzerinde çalışıyor) göre değiştirebilirsiniz :

- (CGFloat)textViewHeightForAttributedText:(NSAttributedString *)text andWidth:(CGFloat)width
{
    UITextView *textView = [[UITextView alloc] init];
    [textView setAttributedText:text];
    CGSize size = [textView sizeThatFits:CGSizeMake(width, FLT_MAX)];
    return size.height;
}

Bu fonksiyon ile, bir NSAttributedString ve yüksekliği gerekli döndürmek için sabit bir genişlik alacak.

Eğer belirli bir yazı tipi ile bir metin çerçeve hesaplamak istiyorsanız aşağıdaki kodu kullanmanız gerekir :

- (CGSize)text:(NSString *)text sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
{
    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
    {
        CGRect frame = [text boundingRectWithSize:size
                                          options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
                                       attributes:@{NSFontAttributeName:font}
                                          context:nil];
        return frame.size;
    }
    else
    {
        return [text sizeWithFont:font constrainedToSize:size];
    }
}

SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO senin önek ekleyebilirsiniz.proje olarak: pch dosyası

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

Ayrıca önceki test SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) değiştirebilirsiniz :

if ([text respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)])‌

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • Tianna Sierra Dance

    Tianna Sierr

    16 EYLÜL 2013
  • Triune Films

    Triune Films

    9 ŞUBAT 2006