Ios 在运行时不知道图像大小时提供正确的图像大小

Ios 在运行时不知道图像大小时提供正确的图像大小,ios,image,uiimageview,uicollectionview,image-resizing,Ios,Image,Uiimageview,Uicollectionview,Image Resizing,我正在集合视图中显示图像网格(3行x 3列)。每个图像都是正方形,其宽度确定为collectionView宽度的1/3。集合视图固定在主视图的左右边缘 我不知道运行时图像的高度和宽度是多少,因为不同iPhone的屏幕尺寸不同。例如,每个图像在5S上的显示像素为100x100,但在6+上的显示像素为130x130。我被建议提供与屏幕大小完全匹配的图像。缩小尺寸时,较大的图像往往会变得像素化且过于锐利。如何解决这个问题 如果您的图像是使用光栅绘图工具创建的照片或光栅类型的图像,则必须在某个地方将原始

我正在集合视图中显示图像网格(3行x 3列)。每个图像都是正方形,其宽度确定为collectionView宽度的1/3。集合视图固定在主视图的左右边缘


我不知道运行时图像的高度和宽度是多少,因为不同iPhone的屏幕尺寸不同。例如,每个图像在5S上的显示像素为100x100,但在6+上的显示像素为130x130。我被建议提供与屏幕大小完全匹配的图像。缩小尺寸时,较大的图像往往会变得像素化且过于锐利。如何解决这个问题

如果您的图像是使用光栅绘图工具创建的照片或光栅类型的图像,则必须在某个地方将原始图像缩放到所需的大小。您可以在iOS中运行时执行此操作,也可以使用能够提供更好缩放结果的工具创建前端设置。不幸的是,唯一完美的形象是原作,而其他一切都是对真相的歪曲

对于图标,唯一精确的渲染解决方案是使用矢量图形。Adobe Illustrator等工具将允许您创建图像,您可以将图像缩放到不同大小,而不会丢失清晰度。不幸的是,这仍然会让您提前生成图像。您可以使用大多数工具编写这一代的脚本,如果您说您的图像都是方形的,那么所需的总数就不多了。iPhone最多需要3个(4/5是相同的宽度,6和6+),iPad最多需要2个(mini/ipad1为@1,retina为@2)

虽然据我所知,iOS不直接支持矢量图像渲染,但也有一些第三方工具。是一个例子,它似乎可以让你导入矢量图像或绘制矢量图像,然后生成在你的应用程序中运行的图像代码。这种工具将为您提供所需的内容,因为图像现在是以您在运行时选择的比例绘制的矢量图形$不过是99

还有SVGKit(),但不确定这有多好/有多坏。它似乎可以让您直接从SVG文件加载和渲染。也许值得一试


总之,我认为您可以使用一个可以控制输出的工具预先生成相对较小的子集,在iOS中点击并让其缩放图像,或者使用第三方矢量到图像渲染工具包,这将为您提供所需的内容。

通常的解决方案是提供三个版本,分别为单、双、三个版本,和三倍分辨率屏幕,并在首次需要图像时,通过使用
drawInRect
将图像重绘到图形上下文中,实时缩小尺寸

我不知道运行时图像的高度和宽度是多少,因为不同iPhone的屏幕尺寸不同。例如,每个图像在5S上的显示像素为100x100,但在6s上的显示像素为130x130+


好吧,你的第一句话是谎言。第二句话证明了您确实知道不同屏幕尺寸上的大小。显然,如果我告诉你一个设备的名称,你可以告诉我你认为图像大小应该是多少。因此,如果您不想在运行时缩小较大的图像,因为您不喜欢生成的质量,只需为每个设备提供正确大小和分辨率的实际图像,并在您运行的实际设备类型上使用正确的图像。

谢谢您的光临。我使用了一个小技巧来处理6+/6s+屏幕大小。我提供了一些不寻常的图像尺寸:100x100用于1x,200x200用于2x,正如预期的那样,但使用390x390用于3x。我还得应付6/6秒。可能只是通过查询UIScreen的大小来实现。