我正在尝试绘制一些文本,它在非视网膜显示器上很好,但在视网膜显示器上它不是高分辨率。
这是我的 iPad Air 的屏幕截图:
代码见下文,它实际上将文本绘制成半透明的,周围有一个几乎不透明的蒙版,因此您可以通过文本看到图像。
-(void) maskImageUIImageView *)imageView withTextNSString *)text fontUIFont *)font attributesNSDictionary *)attributes yOffsetCGFloat)yOffset
{
NSStringDrawingContext *paraContext = [[NSStringDrawingContext alloc] init];
NSStringDrawingOptions stringDrawingOptions = NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingTruncatesLastVisibleLine;
// find out how much space we need for the text
CGSize textSize = CGSizeIntegral([text boundingRectWithSize:CGSizeMake(kNowPlayingTrackDetailsMaxWidth, kNowPlayingTrackDetailsMaxHeight) options:stringDrawingOptions attributes:attributes context:paraContext].size);
// set up the frame for drawing the text, including some padding
CGSize drawingSize = {textSize.width + 80, textSize.height + 60};
CGRect drawingFrame = { 0, 0, drawingSize.width, drawingSize.height};
CGRect textFrame = { 40, 30, textSize.width, textSize.height };
UIGraphicsBeginImageContextWithOptions(drawingSize, YES, 0);
UIColor *bgColor = [UIColor colorWithWhite:1 alpha:.98];
[bgColor setFill];
[bgColor setStroke];
UIBezierPath *path = [UIBezierPath bezierPathWithRect:drawingFrame];
[path fill];
// draw the text
[text drawWithRect:textFrame options:stringDrawingOptions attributes:attributes context:paraContext];
UIImage *textImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// now create an image mask from the text image
CIImage *inputImage = [CIImage imageWithCGImage:textImage.CGImage];
CIFilter *filter = [CIFilter filterWithName"CIMaskToAlpha" keysAndValues:kCIInputImageKey, inputImage, nil];
CIImage *outputImage = [filter outputImage];
imageView.image = [UIImage imageWithCIImageutputImage];
// final set the UIImageView size to match the drawing size
CGRect imageViewFrame = imageView.frame;
imageViewFrame.size = drawingSize;
imageView.frame = imageViewFrame;
}
Best Answer-推荐答案 strong>
Oliver Jones 帮我解决了这个问题。谢谢@orj!
答案是用 创建 UIImage
[UIImage imageWithCIImageutputImage scale:textImage.scale orientation:UIImageOrientationUp];
而不是
imageView.image = [UIImage imageWithCIImageutputImage];
这会正确设置输出图像的比例。
关于ios - 为什么我的文字没有在视网膜显示器上正确绘制,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/24797815/
|