gpt4 book ai didi

ios - 向 drawRect 中的 NSString 文本添加投影 : method without using UILabel

转载 作者:IT王子 更新时间:2023-10-29 08:00:56 26 4
gpt4 key购买 nike

我想为使用 iOS 提供的 NSString (UIStringDrawing) 类别方法绘制的文本添加投影:

- (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width 
withFont:(UIFont *)font minFontSize:(CGFloat)minFontSize
actualFontSize:(CGFloat *)actualFontSize
lineBreakMode:(UILineBreakMode)lineBreakMode
baselineAdjustment:(UIBaselineAdjustment)baselineAdjustment;

显然,没有投影选项。

是的,可以在这里使用 UILabel 并设置投影属性,但这不会有那么高的性能,因为任何 UIView 子类(例如 UILabel)都包装了一个 CALayer 对象并且会变得更重(性能方面) ).

这里是上下文:

我正在为 UITableViewCell 子类进行自定义绘图,在表格单元格 View 上实现 drawRect:,而不是从复合 UIView 子类的 Nib 文件创建表格单元格。

合成一堆 UIView 子类会破坏试图保持这种精简并在 TableView 滚动性能中保持每秒 50-60 帧的目的。

我试过两次以轻微的偏移绘制字符串。一旦我调整了我要去的单元格背景颜色上的投影颜色,这可能会变得可以接受,但它看起来相当笨拙。当然,没有像 UILabel 那样的投影模糊属性。

我搜索了解决方案,他们要么推荐使用 UILabel(我在上面拒绝了,因为我有大约一打不同的文本元素被合成到表格单元格 View 上)或 CGContextSetShadow()。后者似乎总是在矩形形状的上下文中被建议,并且不一定用于将阴影附加到直接使用上述 NSString drawAtPoint... 方法绘制的文本路径。 (我确实尝试过,但它似乎没有用(即没有任何改变);我是 Core Graphics 绘图的新手)。

建议?

最佳答案

CGContextSetShadow() 对我来说效果很好。示例:

- (void)drawRect:(CGRect)rect 
{
NSString *string = @"Hello World!";

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShadow(context, CGSizeMake(20.0f, 20.0f), 10.0f);

[string drawAtPoint:CGPointMake(100.0f, 100.0f) withFont:[UIFont boldSystemFontOfSize:36.0f]];
}

关于ios - 向 drawRect 中的 NSString 文本添加投影 : method without using UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4388384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com