Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在没有像素化的情况下调整(收缩)UIView的大小?_Iphone_Ios_Ipad - Fatal编程技术网

Iphone 如何在没有像素化的情况下调整(收缩)UIView的大小?

Iphone 如何在没有像素化的情况下调整(收缩)UIView的大小?,iphone,ios,ipad,Iphone,Ios,Ipad,在我的应用程序中,我正在创建一个全屏视图,然后将其缩小(约为其原始大小的1/10),以便以后可以将其设置为全尺寸。问题是,该视图在该大小下看起来很糟糕,并且高度像素化 以下是全尺寸视图: 下面是缩小后的视图: 我正在使用setFrame:缩小视图-是否有办法告诉iOS使用高质量插值?或者我已经得到了最高质量的插值,这是它能做的最好的了吗?我建议在缩小视图之前将视图转换为图像(我假设当前您有一个由许多子视图组成的日视图,然后通过调整帧来缩小) 如果你看一看,你会发现苹果是这样做到的:他们不会缩

在我的应用程序中,我正在创建一个全屏视图,然后将其缩小(约为其原始大小的1/10),以便以后可以将其设置为全尺寸。问题是,该视图在该大小下看起来很糟糕,并且高度像素化

以下是全尺寸视图:

下面是缩小后的视图:


我正在使用
setFrame:
缩小视图-是否有办法告诉iOS使用高质量插值?或者我已经得到了最高质量的插值,这是它能做的最好的了吗?

我建议在缩小视图之前将视图转换为图像(我假设当前您有一个由许多子视图组成的日视图,然后通过调整帧来缩小)

如果你看一看,你会发现苹果是这样做到的:他们不会缩小视图,而是将视图的内容捕获为图像,用该图像替换视图,然后缩小图像。这样做的原因有很多:效率(可以去掉缩小的视图,用单个UIImageView替换)、速度和质量

要将UIView保存为图像,应执行以下操作:

UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

…然后用图像替换视图,并缩小它

实际上,我的日视图只是一个视图,没有子视图。在日视图中看到的所有内容都在
drawRect
中绘制。我有一种感觉,我只是不能使这项工作,因为即使是最高质量的插值模式也不能让你在不丢失信息的情况下将图像缩小到25%以下。有趣的是,这可能仍然值得一试,因为如果你将其转换为图像,你可以使用石英的内置插值功能(
CGContextSetInterpolationQuality
)。这里有一篇关于缩小图像和保持质量业务的有用博文:-同样,您需要一个UIImage来完成这项工作,因此请查看上面的代码,了解如何将您的视图转换为CGImageRef