菜鸟教程小白 发表于 2022-12-12 13:19:14

ios - 如何以编程方式将图像适合uiview


                                            <p><p>我以编程方式在 ViewController 上添加了一个 uiview 作为 subview (称为 contentView)。我还以编程方式在该 uiview 上添加了图像。每次我在 iPad 上运行应用程序时,图像都会被拉伸(stretch)!如何修复图像以使其适合 iPad 屏幕但不拉伸(stretch)图像?我知道 <code>drawInRect</code> 是拉伸(stretch)图像的原因。那么我该如何解决呢? </p>

<p>这是我的代码:</p>

<pre><code>UIGraphicsBeginImageContextWithOptions(self.contentView.bounds.size, self.contentView.opaque, 0.0);

[ drawInRect:self.contentView.bounds];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageView *imageView = [ initWithImage:image];

;
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>UIImageView 有一个名为 <a href="https://developer.apple.com/reference/uikit/uiview/1622619-contentmode?language=objc" rel="noreferrer noopener nofollow"><code>contentMode</code></a> 的属性。它决定了如何在 View 上下文中处理图像布局。 <code>contentMode</code> 的类型为 <a href="https://developer.apple.com/reference/uikit/uiviewcontentmode?language=objc" rel="noreferrer noopener nofollow"><code>UIViewContentMode</code></a> . </p>

<p>默认值是<code>UIViewContentModeScaleToFill</code>,它在不考虑纵横比的情况下拉伸(stretch)图像。我假设这是导致问题的变化的纵横比。</p>

<p>如果您希望缩放图像,但保持宽高比,您有两种选择:</p>

<ol>
<li><p><code>UIViewContentModeScaleAspectFit</code>:这将显示缩放以填充 View 的图像,但不会剪切任何内容(如果纵横比与 View 大小不匹配,它将显示水平或垂直乐队)</p></li>
<li><p><code>UIViewContentModeScaleAspectFill</code>:这将缩放图像以完全填充 View ,没有任何 strip- 如果图像比例与 View 比例不匹配,这将导致内容被剪裁。</p></li>
</ol>

<p>要在 Objective-C 中的 ImageView 上设置 contentMode,请使用以下语法:</p>

<pre><code>UIImage *image = ;
UIImageView *imageView = [ initWithImage:image];
imageView.contentMode = UIViewContentModeScaleAspectFill;
...
</code></pre>

<p>您应该不再需要使用自定义上下文绘图来使其工作(感谢 Losiowaty 向我询问此问题)。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何以编程方式将图像适合uiview,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43431464/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43431464/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何以编程方式将图像适合uiview