- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
随着 iOS7 的发布,以下功能已被弃用:
drawAtPoint:forWidth:withFont:minFontSize:actualFontSize:lineBreakMode:baselineAdjustment:
在 Apple 的文档中建议使用
drawInRect:withAttributes:
我使用这个函数的原因是因为 <code>minFontSize</code>
参数,它让我可以在矩形内绘制一个字符串。
如果文本不适合,它会先将文本大小缩小到 <code>minFontSize</code>
然后如果它不适合,它会截断它。
到目前为止,我无法使用 <code>drawInRect:withAttributes:</code>
完成此操作.
我可以使用哪个 key 来确定 <code>minFontSize</code>
等价?
最佳答案
它比以前复杂一点,你不能使用最小字体大小,但必须使用最小字体比例因子。 iOS SDK 中还有一个错误,它会在大多数用例中失效(请参阅底部的注释)。这是您必须做的:
// Create text attributes
NSDictionary *textAttributes = @{NSFontAttributeName: [UIFont systemFontOfSize:18.0]};
// Create string drawing context
NSStringDrawingContext *drawingContext = [[NSStringDrawingContext alloc] init];
drawingContext.minimumScaleFactor = 0.5; // Half the font size
CGRect drawRect = CGRectMake(0.0, 0.0, 200.0, 100.0);
[string drawWithRect:drawRect
options:NSStringDrawingUsesLineFragmentOrigin
attributes:textAttributes
context:drawingContext];
注意事项:
至少在 7.0.3 版之前的 iOS 7 SDK 中似乎存在错误:如果您在属性中指定自定义字体,则 miniumScaleFactor 将被忽略。如果您为属性传递 nil,则文本会正确缩放。
NSStringDrawingUsesLineFragmentOrigin
选项很重要。它告诉文本绘图系统,绘图矩形的原点应该在左上角。
无法使用新方法设置 baselineAdjustment。您必须自己执行此操作,首先调用 boundingRectWithSize:options:attributes:context:
,然后在将其传递给 drawWithRect:options:attributes:context
之前调整矩形。
关于iOS 7's deprecation of NSString' s drawAtPoint :forWidth:withFont:minFontSize:actualFontSize:lineBreakMode:baselineAdjustment:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18923349/
其他人会从UIImage -drawAtPoint体验到非常慢的性能:有小费吗? 最佳答案 缓慢的图像绘制可能有多种原因。在这种情况下,CPU发生的是三次三次大小调整。解决方案:使用不需要调整大小,预
我正在尝试使用以下代码绘制图像: [img drawAtPoint:CGPointZero]; 但问题是,在具有视网膜显示屏的 iPhone 上,图像不会以视网膜比例绘制。看起来图像被放大然后绘制。我
我有在 CALayer 中绘制文本的代码: override func drawInContext(ctx: CGContext) { ... // text
我想在屏幕上的某个位置绘制“文本”而不使用 UILabel,所以我 [@"text" drawAtPoint:CGPointMake(100, 200) withFont:[UIFont
我想制作一些带有标签的 UIImage,如果未加载照片,它会显示。在应用程序中生成此图像更有用,因为它很容易本地化文本。我有代码: NSString *text = @"Photo not loade
我正在自定义绘制一些文本: point = CGPointMake(77, 5); [[message valueForKey:@"user_login"] drawAtPoint:point
我一直在尝试将 NSString 添加到我的应用程序中的 NSImage 中。由于某种原因,它似乎非常模糊和嘈杂。这是保存为 jpeg 的输出。 /image/QHVQF.jpg 我读到这可能是由于在
在我的应用程序中,我以编程方式构建一个 NSImage 对象,并将其设置为应用程序停靠图标。我想向图标添加一些文本,并一直在尝试使用 NSString drawAtPoint: withAttribu
我用它来组合 2 个 NSImage: newImage = [[NSImage alloc] initWithSize:NSMakeSize(size1.width,
嘿。我有一个非常简单的文本输出到缓冲系统,它将随机崩溃。 DAYS会很好,然后有时会在几分钟内崩溃几次。对于使用高级控件的其他人,调用栈几乎完全相同: http://discussions.apple
我有一个时钟指针的图像。我正在尝试创建此图像的旋转版本,以便我可以使用动画播放它(使用 UIImageView 的 animatedImages 方法)。 在下面的代码中,我看到如果我将 CGCont
我正面临 NSString 方法 drawAtPoint 和 kCGTextFillClip 的问题。我需要创建一个带有渐变而不是简单颜色的 UILabel,因此我将其子类化并覆盖了 drawRect
我正在尝试使用 drawAtPoint:point withAttributes:attrs 方法将一个字符串附加到 View ,但是该字符串在 View 内的任何地方都看不到,或者至少我看不到它(可
我目前致力于封装许多 [NSString drawAtPoint:withFont:] 函数调用到一个方法,这样我就可以通过一次调用绘制很多字符串,但是我怎么能告诉方法在哪里画这些弦? 如果我将 CG
我对核心图形有点陌生,我一直出错,当我合并它们时第二张图片没有显示: - (UIImage*)imageByCombiningImage:(UIImage*)gfirstImage withImage
在下图中,每行的第一个字符是在 subview 中绘制的 NSAttributed 字符串。该线的其余部分是在常规 NSTextView 中绘制的。 subview 与 NSTextView 中的行片
由于 CGContextShowTextAtPoint 在 iOS 7 中已弃用,我想将 CGContextShowTextAtPoint 更改为 drawAtPoint 但文本正在输出。 //Ad
我正在尝试将为 iOS 7 之前版本编写的示例代码合并到我的演示项目中。我得到一些与 drawAtPoint 和 sizeWithFont 相关的折旧方法。我已经阅读了一堆具有相同问题的 SO 条目,
我目前正在关注 Matt Neuburg 编写的 Programming iOS 7 中的代码。 我在我的自定义 View (ArrowsView) 中输入了以下代码。 #import "Arrows
所以我有一个巨大的 UIImage,可能是 10,000x10,000 像素(我知道它们显然不应该超过 1024x1024,但无论如何这不是主要问题)。在屏幕上移动它(使用 -drawAtPoint
我是一名优秀的程序员,十分优秀!