2014-02-10 51 views
0

比方说,我有一个复杂的UIView,它最初在屏幕上很小,比如80x80。缩放UIView而不会丢失细节

它的其中一个子视图是UIImageView,显示的图像的实际分辨率是1024x1024。

当用户点击UIView我希望视图几乎全屏放大,以便用户可以更好地看到图像。

我已经知道如何缩放UIView以放大,我的问题如下。

放大此视图而不对图像进行像素化的最佳方式是什么?

我想到这些选项:

  1. 其实我可以设置UIView到全屏幕大小的框架,通常规模下来,所以我敢肯定,当它放大时,它将会非常详细。无论如何,这个解决方案都有一个强大的性能问题,导致许多缩小的视图移动,将会对CPU/GPU造成相当大的冲击。

  2. 我可以做到这一点,就像我描述的那样,小框架和比例> 1来放大,但在这种情况下,图像会显示没有像素化?

  3. 我实际上可以设置框架重新显示大/小尺寸的视图。在这种情况下,细节会很好,但是我的表现也很出色,因为我的UIView有大约15个子视图,需要复杂的计算才能重新布局,所以设置帧的速度并不是那么“快”。

哪一个是最好的解决方案?或者有谁有其他更好的解决方案?

+1

尝试使用'UIScrollView'类来缩放功能。 – NeverHopeless

+0

我很抱歉,但这并没有回答我的问题。如果我应该使用滚动视图(在我的情况下是不可能的,因为我应该有太多)将我的视图的框架设置为80x80并放大是不会像素化的? – Axy

+0

查看本教程:http://www.raywenderlich.com/10518/how-to-use-uiscrollview-to-scroll-and-zoom-content – NeverHopeless

回答

1

你为什么不只是有缩略图表示是80x80,当用户点击任何缩略图,您可以从包含所有缩略图当前视图与+transitionFromView:toView:duration:options:completion:方法过渡到new view并只显示与全分辨率的UIImageView图像加载到新视图:)

+0

我了解您的解决方案,但该视图不是一个简单的图像,这是一个非常复杂的视角,大约有20个子视图,透明度很高。无法缩放时再分配一个,导致创建和显示过程在iPhone4上花费近4秒。无论如何感谢您的建议。 – Axy

+0

你很可能会使事情变得复杂。向我们展示你在做什么的截图,因为从你发布的问题来看,我的解决方案就足够了。 – Pavan

+0

对不起,我无法提供屏幕,导致我的工作在我的客户的NDA之下。我的观点有大约20个子视图,当视图范围发生变化时,每个视图都会改变其框架,因为它们需要根据一些公式进行定位,而不仅仅是在中心位置。所以如果我改变视图的框架,iPhone4的效果至少需要4秒才能显示。主要是因为这个子视图的某些部分是通过dinamically绘制的,有些用OpenGL纹理。所以要简短,改变框架或分配一个新的不是我的选择。 – Axy

相关问题