2016-07-30 62 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 –