- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
此方法在 iOS 7.0 中已弃用:
drawAtPoint:forWidth:withFont:fontSize:lineBreakMode:baselineAdjustment:
现在使用 drawInRect:withAttributes:
代替。
我找不到 fontSize 和 baselineAdjustment 的 attributeName。
编辑
感谢@Puneet 的回答。
实际上,我的意思是如果没有这些 key ,如何在iOS 7中实现这个方法?
像下面的方法:
+ (CGSize)drawWithString:(NSString *)string atPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font fontSize:(CGFloat)fontSize
lineBreakMode:(IBLLineBreakMode)lineBreakMode
baselineAdjustment:(UIBaselineAdjustment)baselineAdjustment {
if (iOS7) {
CGRect rect = CGRectMake(point.x, point.y, width, CGFLOAT_MAX);
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = lineBreakMode;
NSDictionary *attributes = @{NSFontAttributeName: font, NSParagraphStyleAttributeName: paragraphStyle};
[string drawInRect:rect withAttributes:attributes];
size = CGSizeZero;
}
else {
size = [string drawAtPoint:point forWidth:width withFont:font fontSize:fontSize lineBreakMode:lineBreakMode baselineAdjustment:baselineAdjustment];
}
return size;
}
我不知道如何将fontSize
和baselineAdjustment
传递给
属性
字典。
例如
NSBaselineOffsetAttributeName
键应该传递一个 NSNumer
给它,但是 baselineAdjustment
是 Enum
。
难道没有其他方法可以传递这两个变量吗?
最佳答案
您可以使用 NSDictionary
并像这样应用属性:
NSFont *font = [NSFont fontWithName:@"Palatino-Roman" size:14.0];
NSDictionary *attrsDictionary =
[NSDictionary dictionaryWithObjectsAndKeys:
font, NSFontAttributeName,
[NSNumber numberWithFloat:1.0], NSBaselineOffsetAttributeName, nil];
使用 attrsDictionary
作为参数。
引用:Attributed String Programming Guide
迅速:IN String drawInRect 不可用,但我们可以使用 NSString 代替:
let font = UIFont(name: "Palatino-Roman", size: 14.0)
let baselineAdjust = 1.0
let attrsDictionary = [NSFontAttributeName:font, NSBaselineOffsetAttributeName:baselineAdjust] as [NSObject : AnyObject]
let str:NSString = "Hello World"
str.drawInRect(CGRectZero, withAttributes: attrsDictionary)
关于ios - 如何使用drawInRect :withAttributes: instead of drawAtPoint:forWidth:withFont:fontSize:lineBreakMode:baselineAdjustment: in iOS 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19442653/
为什么这行不通?无论字符串的长度如何,它总是返回 18。有 this thread ,但不是确定的答案。 NSString * t = @""; CGSize size = [t si
我一直使用的许多方法来确定用于创建复杂 pdf 文档的打印字符串的布局在 iOS7 中已被弃用。文档调用了相同的方法来替代所有已弃用的 sizeWithFont 方法: boundingRectWit
我有一个奇怪的问题。我的 sizeWithFont: forWidth: lineBreakMode:NSLineBreakByWordWrapping正在返回错误的值。我有一个字符串数组,需要放在一
这个问题在这里已经有了答案: How to calculate actual font point size in iOS 7 (not the bounding rectangle)? (8 个答
在我的问题“How do I get -[NSString sizeWithFont:forWidth:lineBreakMode:] to work?”中,我了解到 -[NSString sizeW
sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode: 返回的 CGSize 始终包含相同的高度。为什么会这样,有没有办法解决这
我用建议的解决方案描述了我的问题,更新了我的问题“Sizing a UILabel (in the iPhone SDK) to fit?”,但没有得到答案。也许通过提出新问题我会得到更好的结果...
我在 iPhone SDK 开发人员文档的 NSString 类引用中找不到 NSString sizeWithFont:forWidth:lineBreakMode: 方法的文档(参见 Kevin
除非我读错了文档,否则这个方法 sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode: 似乎没有返回正确的 CGSize。这是示
随着 iOS7 的发布,以下功能已被弃用: drawAtPoint:forWidth:withFont:minFontSize:actualFontSize:lineBreakMode:baselin
此方法在 iOS 7.0 中已弃用: drawAtPoint:forWidth:withFont:fontSize:lineBreakMode:baselineAdjustment: 现在使用 dra
我是一名优秀的程序员,十分优秀!