IOS 使用 CGSize 弃用方法创建文本大小

标签 ios objective-c 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];
}

最佳答案

使用这个

 - (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;
}

希望对你有帮助

关于IOS 使用 CGSize 弃用方法创建文本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38675620/

相关文章:

ios - Web 应用程序自动重定向到 iOS 问题的初始页面(不应重定向)

ios - 如何在 Swift 中过滤二维数组?

iphone - 如何根据标题文本增加 UIButton 高度?

ios - 将 UITableView 滑动到屏幕上,继续滑动?

ios - 通过 Pods 将 SocketRocket 添加到 Swift 项目

ios - 如何在 NSArray 中获取图像 url 的 CGSizes

ios - 无法识别手势(双指双击): Xcode 9. 1

ios - 如何在 Safari iOS 中启用从深层链接启动应用程序

ios - 有什么方法可以使用全局静态字典来访问 objective-c ios 中的所有 View Controller 吗?