objective-c - 图像出现像素化

标签 objective-c ios

这就是我想做的

  1. 创建 UIImage View 。
  2. 在上面画一些画
  3. 按共享按钮即可共享带有图画的图像。

我的代码在 iPad 和 iPhone 上完美运行。视网膜显示屏出现问题。所以我的猜测是某些规模没有正确处理,但不确定我做错了什么。这是我的代码

// Create the UIImageView named centerCanvas
// Do the drawing
CGPoint origin = centerCanvas.frame.origin;
CGSize  size   = centerCanvas.frame.size;
CGSize screenSize = [self returnScreenSize];
CGRect  rect   = CGRectMake(origin.x, origin.y, size.width, size.height);
UIGraphicsBeginImageContext(screenSize);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.view.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = CGImageCreateWithImageInRect([img CGImage], rect);
[shareView setImage:[UIImage imageWithCGImage:imageRef]]; 


-(CGSize) returnScreenSize
{
    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    CGFloat screenScale = [[UIScreen mainScreen] scale];
    CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale,screenBounds.size.height * screenScale);
    return screenSize;
}

最佳答案

尝试使用

    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);

而不是旧的 UIGraphicsBeginImageContext,它使用等于 1 的比例因子(上面的第三个参数)。通过指定 0.0 作为比例因子,您可以获得当前屏幕的比例因子。看看 reference .

关于objective-c - 图像出现像素化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267445/

相关文章:

ios - iOS 中用于转换的 UITextField 更改

ios - 使用 SDWebImage 忽略查询参数

ios - 无限循环向左滚动重复文本

ios - 使用自动布局将动态大小的 View (高度)添加到 UIScrollView

objective-c - 如何从 OS X 中的设备 ID 知道设备的名称?

objective-c - 字符串常量和字符串文字有什么区别?

ios - 使用 Codable 解析嵌套的 JSON 数据

objective-c - 带有圆角的 UIView,但内容不是圆角的

ios - 如何通过名字对 ABAddressBook 联系人进行排序

iphone - 重写 viewDidAppear 并让它加载特定的 URL 不行吗?