// 图像控件(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.
}
}
Swift UIImageView 相框
最新推荐文章于 2024-05-01 15:48:31 发布