Swift UIImageView 相框

本文介绍如何使用UIImageView进行图片显示、动画播放等操作,并讲解了不同图片填充模式的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//  图像控件(UIImageView)

import UIKit

class ViewController: UIViewController {

    var imageView4:UIImageView!

    let screenWidth = UIScreen.mainScreen().bounds.size.width
    let screenHeight = UIScreen.mainScreen().bounds.size.height

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        /**
         1,使用图像控件显示图片
            注意: UIImage(named: "face") named:后面接图片,当图片是PNG格式时,.png 可以省略,其他格式都不可以
         */
        // 初始化
        let imageView = UIImageView(image: UIImage(named: "face"))
        // 设置frame
        imageView.frame = CGRectMake(10, 10, 100, 100)
        // 
        self.view.addSubview(imageView)

        /**
         2,改变图片
         */
        imageView.image = UIImage(named: "1")

        /**
         3,从文件目录中获取图片
         */
        let path = NSBundle.mainBundle().pathForResource("2", ofType: "jpg")
        let newImage = UIImage(contentsOfFile:path!)
        let imageView1 = UIImageView(image: newImage)
//        imageView1.frame = CGRectMake(0, 100, <#T##width: CGFloat##CGFloat#>, <#T##height: CGFloat##CGFloat#>)
        self.view.addSubview(imageView1)

        /**
         4,从网络地址获取图片
         <!--  访问Url链接时,需要在info.plist文件中添加以下五行代码  -->
         <key>NSAppTransportSecurity</key>
         <dict>
         <key>NSAllowsArbitraryLoads</key>
         <true/>
         </dict>
         */
        // 定义 NSURL 对象
        let url = NSURL(string:"http://hangge.com/blog/images/logo.png")
        // 从网络获取数据流
        let data = NSData(contentsOfURL: url!)
        // 通过数据流初始化图片
        let newImage2 = UIImage(data: data!)
        let imageView2 = UIImageView(image: newImage2);
        self.view.addSubview(imageView2)

        /**
         5,使用图像控件实现动画播放
         UIImageView中提供了存储多张图片来创建动画的功能,具体做法是,在animationImages属性中设置一个图片数组,然后使用startAnimating方法开始动画,最后用stopAnimating方法停止动画。同时,使用animationDuration属性中可以设置动画每帧切换的速度(秒)。
         */
        imageView4 = UIImageView()
        imageView4.frame = CGRectMake(0, 200, 100, 100)
        // 设置动画
        imageView4.animationImages = [UIImage(named:"1.jpg")!,UIImage(named:"2.jpg")!,UIImage(named:"3.jpg")!,UIImage(named:"4.jpg")!]
        // 设置每隔0.5秒变化一次
        imageView4.animationDuration = 1.0
        self.view.addSubview(imageView4)

        /**
         6,保持图片比例

         - parameter animated:
         默认UIImageView会拉伸图片使其占满整个UIImageView,如果不想让图片变形,可以将ContentMode设置为Aspect Fit。
         .ScaleAspectFill   一小边填满,大边截掉,其他的根据原图图小于框架则按照位置摆放全部显示,图大于框架则截取方位对应部分
         .ScaleAspectFit    按照界面自动调整界面内容,多出部分为透明
         .ScaleToFill
         */
        imageView4.backgroundColor = UIColor.blackColor()

        imageView4.contentMode = .ScaleAspectFill
        // 将多余的剪切掉,此行代入若是没加,则相框自动适配图片
        imageView4.clipsToBounds = true
        /**
         7,需求1️⃣

         - parameter animated: 相框的大小是固定的,不同的图片有不用的尺寸,将多余的图片切掉
         */
        // 初始化图片
        let image7 = UIImage(named: "5")
        // 初始化相框
        let imageView7 = UIImageView(image: image7)
        // 设置相框大小
        imageView7.frame = CGRectMake(0, 300, 100, 150)
        // 当相框的大小是固定的,而不同的图片具有不同的尺寸,需求是讲图片不变形的放在相框中
        imageView7.contentMode = .ScaleAspectFill
        // 确定剪切
        imageView7.clipsToBounds = true

        self.view.addSubview(imageView7)

        /**
         8:需求2️⃣

         - parameter animated: 相框根据图片的大小来设定
         */
        imageView7.frame = CGRectMake(0, 0, screenWidth, screenWidth*image7!.size.height/image7!.size.width)

        /**
         9:需求3️⃣

         - parameter animated: 让图片自适应的放在相框中
         */
        imageView7.backgroundColor = UIColor.blackColor()
        imageView7.frame = self.view.bounds
        imageView7.contentMode = UIViewContentMode.ScaleAspectFit



    }
    // 在视图将要出现的时候 开始动画
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        imageView4.startAnimating()
    }
    // 在视图已经消失的时候 停止动画
    override func viewDidDisappear(animated: Bool) {
        super.viewDidDisappear(animated)
        imageView4.stopAnimating()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值