2014-09-11 39 views
7

beforeiOS NSBaselineOffsetAttributeName ayarlandığında NSTextAttachment neden kayboluyor?

Ben metnin merkezine NSTextAttachment hizalamak istiyorum, bu yüzden NSTextAttachment taban çizgisini değiştirmek için NSBaselineOffsetAttributeName ayarlayın.

NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:@"" attributes:@{NSFontAttributeName: [UIFont fontWithName:@"STHeitiSC-Light" size:17]}]; 
NSTextAttachment *attachment = [[NSTextAttachment alloc] init]; 
attachment.image = [UIImage imageNamed:@"micon"];   
NSMutableAttributedString *ats = [[NSAttributedString attributedStringWithAttachment:attachment] mutableCopy]; 
[ats addAttributes:@{NSBaselineOffsetAttributeName:@(-5),NSFontAttributeName: [UIFont fontWithName:@"STHeitiSC-Light" size:17]} range:(NSRange){0,ats.length}]; 
[attrString appendAttributedString:s]; 

Sonra UILabel için boyutu hesapladım ve attributedText değerini ayarlayın.

CGRect textFrame = [attrString boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading context:nil]; 
UILabel *label = [[UILabel alloc] initWithFrame:textFrame]; 
label.lineBreakMode = NSLineBreakByCharWrapping; 
label.numberOfLines = 0; 
label.attributedText = attributed; 
label.backgroundColor = [UIColor clearColor]; 

Son olarak son görüntü kayboldu.

after

kimse bu oluyor ve nasıl düzeltebilirim neden açıklayabilir.

+0

Merhaba, bu bağlantıya çok yardımcı oluyorsunuz http://stackoverflow.com/questions/26105803/center-nstextattachment-image-next-to-single-line-uilabel – Vinayak

cevap

5

Sonunda

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
    paragraphStyle.minimumLineHeight = lineheight; //line height equals to image height 
    [attributes setValue:paragraphStyle forKey:NSParagraphStyleAttributeName]; 

değişmez Başka bir özellik NSParagraphStyleAttributeName ekleyerek bunu çözmek görüntü en ofset sadece metin ofset ayarlamasına.

İlgili konular