2016-07-30 41 views
0

您好我正在reacreating的TEXTSIZE與這些代碼IOS創建TEXTSIZE與CGSize折舊方法

CGSize textSize = [self.text sizeWithFont:self.font 
         constrainedToSize:self.frame.size 
          lineBreakMode:self.lineBreakMode]; 

上面是貶值。我們如何改變它以保持目的?

任何幫助是非常感謝。謝謝!

我的整個功能的目的是使該UIlable頂部(垂直)

- (void)alignTop 
{ 
    CGSize textSize = [self.text sizeWithFont:self.font 
          constrainedToSize:self.frame.size 
           lineBreakMode:self.lineBreakMode]; 

    CGRect textRect = CGRectMake(self.frame.origin.x, 
           self.frame.origin.y, 
           self.frame.size.width, 
           textSize.height); 
    [self setFrame:textRect]; 
    [self setNeedsDisplay]; 
} 
+0

「已棄用」?這取決於你的iOS版本是什麼,你不告訴我們,所以誰知道? – Droppy

+0

對不起,代碼來自舊項目ios 6.現在需要更新7+! –

回答

2

使用此

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context 

或使用本

- (CGSize)sizeWithAttributes:(nullable NSDictionary<NSString *, id> *)attrs 

這是一個例子

+ (CGSize)neededSizeForText:(NSString*)text withFont:(UIFont*)font andMaxWidth:(float)maxWidth 
{ 
    NSStringDrawingOptions options = (NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin); 

    NSMutableParagraphStyle * style = [[NSMutableParagraphStyle alloc] init]; 
    [style setLineBreakMode:NSLineBreakByWordWrapping]; 
    [style setAlignment:NSTextAlignmentRight]; 

    NSDictionary *textAttibutes = @{NSFontAttributeName : font, 
            NSParagraphStyleAttributeName : style}; 

    CGSize neededTextSize = [text boundingRectWithSize:CGSizeMake(maxWidth, 500) options:options attributes:textAttibutes context:nil].size; 

    return neededTextSize; 
} 

我希望這有助於

+0

謝謝,我只是編輯這個問題。目的是調整UIable(垂直)頂部。最大寬度是frame.size.width? –

+0

maxWidth是您的標籤視圖容器的寬度 - 您的邊距,在您的情況下是您的frame.size.width –