我想以编程方式制作一个这样的图像:

示例

我有上面的图片和文字.我应该在图像上写文字吗?

我想让它完整.png图像(图像+标签)并将其设置为按钮的背景.

推荐答案

在图像内绘制文本并返回结果图像:

+(UIImage*) drawText:(NSString*) text 
             inImage:(UIImage*)  image 
             atPoint:(CGPoint)   point 
{

    UIFont *font = [UIFont boldSystemFontOfSize:12];
    UIGraphicsBeginImageContext(image.size);
    [image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)];
    CGRect rect = CGRectMake(point.x, point.y, image.size.width, image.size.height);
    [[UIColor whiteColor] set];
    [text drawInRect:CGRectIntegral(rect) withFont:font]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

用法:

// note: replace "ImageUtils" with the class where you pasted the method above
UIImage *img = [ImageUtils drawText:@"Some text"
                            inImage:img 
                            atPoint:CGPointMake(0, 0)];

将图像中文本的原点从0,0更改为您喜欢的任意点.

要在文本后面绘制一个纯色矩形,请在第[[UIColor whiteColor] set];行之前添加以下内容:

[[UIColor brownColor] set];
CGContextFillRect(UIGraphicsGetCurrentContext(), 
                  CGRectMake(0, (image.size.height-[text sizeWithFont:font].height), 
                                  image.size.width, image.size.height));

我使用文本大小来计算纯色矩形的原点,但是您可以用任何数字替换它.

Ios相关问答推荐

SwiftUI@Observable不跟踪父类属性中的更改以更新视图

从后台线程调用DispatchObject的方法安全吗?

如何将Safari调试器附加到Turbo-iOS原生应用中的模拟器

如何从Windows PC在iPhone上安装Flutter 应用程序

如何在SwiftUI中顺时针和逆时针两个方向应用旋转效果?

如何使用 SwiftData 从列表中删除子项目?

更改订单时如何保存商品的位置?

为什么@FetchRequest 在删除时不更新和重绘视图?

SwiftUI 中的描边图像边框

iOS SwiftUI - 从以前的 struct 调用函数

转换在 NavigationView 中不起作用

Swift 5.7 - 使存在的任何协议符合 Hashable

Xcode 14 需要为 Pod Bundles Select 开发团队

在 Swift 中合并子数组

界面生成器 - 无法从路径加载设计对象(空)

关闭所有打开的视图控制器的单个函数

改变 UIView 位置的简单方法?

正确的领域使用模式/最佳实践?

Sierra 中的安全/协同设计: keys 串忽略访问控制设置和 UI 提示权限

Swift:如何在设备旋转后刷新 UICollectionView 布局