童年月光 發表於 2023-7-2 16:24:00

IOS开发-UIImageView基本用法

<h1>UIImageView是iOS中用于显示图像(图片、gif、svg等)的视图。</h1>
<p>它的主要功能有:</p>
<p><span class="c-mrkdwn__br" data-stringify-type="paragraph-break">1. 显示图片<br>UIImageView可以通过image属性显示一张UIImage类型的图片。可以是本地图片、从网络下载的图片等。</span></p>
<p><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break">2. 设置填充模式<br>可以通过contentMode属性设置图片在UIImageView内的显示和填充模式。内容模式有:<span class="c-mrkdwn__br" data-stringify-type="paragraph-break">- scaleToFill:拉伸填充整个imageView<br>- scaleAspectFit:保持纵横比缩放适应imageView<br>- scaleAspectFill:保持纵横比缩放填充满imageView<br>- top、bottom、left、right:拉伸填充指定方向<br>- center:居中不拉伸显示</span></span></span></p>
<p><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break">3. 设置多种交替动画<br>可以通过animationImages和animationDuration设置多张图片的交替动画。<br>或者配置UIImageViewAnimation方式来实现更为复杂的动画。</span></span></span></span></p>
<p><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break">4. 支持用户交互<br>UIImageView支持用户交互事件,可以得到点击、拖动等事件。</span></span></span></span></span></p>
<p><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break"><span class="c-mrkdwn__br" data-stringify-type="paragraph-break">5. 实现自适应布局<br>UIImageView支持Auto Layout,可以自动适应不同屏幕尺寸。</span></span></span></span></span></span></p>
<h1>1. 创建UIImageView实例:</h1>
<div class="cnblogs_code">
<pre>    UIImageView *imgview = [ init];</pre>
</div>
<h1>2.设置UIImageView的布局信息:</h1>
<div class="cnblogs_code">
<pre>   imgview.frame =CGRectMake((self.view.frame.size.width-<span style="color: rgba(128, 0, 128, 1)">100</span>)/<span style="color: rgba(128, 0, 128, 1)">2</span>, (self.view.frame.size.height-<span style="color: rgba(128, 0, 128, 1)">100</span>)/<span style="color: rgba(128, 0, 128, 1)">2</span>, <span style="color: rgba(128, 0, 128, 1)">100</span>, <span style="color: rgba(128, 0, 128, 1)">100</span>);</pre>
</div>
<h1>3. 设置image属性,显示图片:</h1>
<div class="cnblogs_code">
<pre>imgview.image = </pre>
</div>
<p>这里需要使用UIImage类的imageNamed方法传入图片的名称来生成图片,然后赋给imgview的image属性。</p>
<div><span style="color: rgba(29, 28, 29, 1); font-family: Slack-Lato, Slack-Fractions, appleLogo, sans-serif; font-size: 15px; font-variant-ligatures: common-ligatures">效果图:</span></div>
<div>
<h1><img src="https://img2023.cnblogs.com/blog/2702085/202307/2702085-20230702161144008-1745407694.png" alt="" loading="lazy"></h1>
<h1>&nbsp;4. 设置contentMode属性,控制图片缩放模式:</h1>
<pre class="c-mrkdwn__pre" data-stringify-type="pre">imageView.contentMode = UIViewContentModeScaleToFill; // 充满
imageView.contentMode = UIViewContentModeScaleAspectFit; // 完整显示
imageView.contentMode = UIViewContentModeScaleAspectFill; // 完整充满这里不做演示。就是三个枚举只,分别用来设置不同的展示方式<br><br></pre>
<h1>&nbsp;5.&nbsp;UIImageView设置圆角的方式</h1>
<h3>&nbsp; 第一种方法:通过设置layer的属性</h3>
<p>&nbsp; 最简单的一种,但是很影响性能,一般在正常的开发中使用很少.</p>
<p>&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置圆角</span>
    imgview.layer.cornerRadius = imgview.frame.size.width / <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">;
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将多余的部分切掉</span>
    imgview.layer.masksToBounds = YES;</pre>
</div>
<p>效果:</p>
<p><img src="https://img2023.cnblogs.com/blog/2702085/202307/2702085-20230702161715078-1479419043.png" alt="" loading="lazy"></p>
<p>&nbsp;</p>
<h3>第二种方法:使用贝塞尔曲线UIBezierPath和Core Graphics框架画出一个圆角</h3>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">开始对imageView进行画图</span>
   UIGraphicsBeginImageContextWithOptions(imgview.bounds.size, NO, <span style="color: rgba(128, 0, 128, 1)">1.0</span><span style="color: rgba(0, 0, 0, 1)">);
   </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">使用贝塞尔曲线画出一个圆形图</span>
<span style="color: rgba(0, 0, 0, 1)">   [ addClip];
   ;
      imgview.image </span>=<span style="color: rgba(0, 0, 0, 1)"> UIGraphicsGetImageFromCurrentImageContext();
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">结束画图</span>
   UIGraphicsEndImageContext();</pre>
</div>
<h3>第三种方法:使用CAShapeLayer和UIBezierPath设置圆角</h3>
<p>首先需要导入<code>&lt;AVFoundation/AVFoundation.h&gt;</code></p>
<div class="cnblogs_code">
<pre> UIBezierPath *maskPath =<span style="color: rgba(0, 0, 0, 1)"> ;

      CAShapeLayer </span>*maskLayer =<span style="color: rgba(0, 0, 0, 1)"> [init];
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置大小</span>
      maskLayer.frame =<span style="color: rgba(0, 0, 0, 1)"> imgview.bounds;
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置图形样子</span>
      maskLayer.path =<span style="color: rgba(0, 0, 0, 1)"> maskPath.CGPath;
      imgview.layer.mask </span>=<span style="color: rgba(0, 0, 0, 1)"> maskLayer;
    </span></pre>
</div>
<p>效果图:</p>
<p><img src="https://img2023.cnblogs.com/blog/2702085/202307/2702085-20230702162253430-721570331.png" alt="" loading="lazy"></p>
<h1>&nbsp;</h1>
<h1 class="hljs objectivec"><span style="color: rgba(255, 0, 0, 1); background-color: rgba(255, 255, 255, 1)">这三种方法中第三种最好,对内存的消耗最少,而且渲染快速</span></h1>
<p>&nbsp;&nbsp;</p>
</div><br><br>
来源:https://www.cnblogs.com/SadicZhou/p/17520929.html
頁: [1]
查看完整版本: IOS开发-UIImageView基本用法