objective-c - 查找 NSString 的宽度作为 CGFloat

标签 objective-c

我知道这已经发布了,但是我找到了解决方案

-(CGFloat)widthOfText{
    CGRect idealFrame = [self.text boundingRectWithSize:self.frame.size
                                           options:NSStringDrawingUsesLineFragmentOrigin
                                         attributes:@{ NSFontAttributeName:self.font }
                                            context:nil];

    return idealFrame.size.width;
}

self 是一个 UILabel

不工作。

我想在字符串的末尾放置一个按钮,所以我需要字符串的宽度来计算按钮的绝对位置

谁能解释为什么这不起作用或建议不同的方法?

最佳答案

一个或多个输入不是你所期望的,NSLog() self.text, self.frame, self.font -- 基本调试。

传入参数确实比使用ivars更好,这样更容易测试。它还消除了对类的依赖。

正常工作的例子:

NSString *text = @"1235";
CGSize frameSize = CGSizeMake(300, 50);
UIFont *font = [UIFont systemFontOfSize:12];

CGRect idealFrame = [text boundingRectWithSize:frameSize
                                       options:NSStringDrawingUsesLineFragmentOrigin
                                    attributes:@{ NSFontAttributeName:font }
                                       context:nil];
NSLog(@"width: %0.1f", idealFrame.size.width);

关于objective-c - 查找 NSString 的宽度作为 CGFloat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25354254/

相关文章:

iphone - Objective-C - 如何保存和加载包含图像的数组

objective-c - 如何记录ios显示对象

objective-c - 如何实现或模拟 "abstract"OCUnit 测试类?

ios - 发现 UIActivityViewController 支持的所有端点,如微信、KaKao、Line 等?

ios - 无法编译适用于 iOS 的 Google SignIn SDK

c++ - XCode 中的类大纲

ios - 摆脱 SIGABRT 错误

ios - 如何删除 NSMutableSet 中的多个元素?

iphone - 为什么 Core Data 比 SQLite 快

objective-c - 搜索数组数组的智能方法