1.6 NSImageView
NSImageView是Cocoa中用来显示图片的控件。
1.6.1 基本声明
var imageView: NSImageView!
override func loadView() {
self.view = NSView(frame: NSRect(x: 0, y: 0, width: 500, height: 300))
}
private func initView(){
mView = NSView(frame: NSRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
imageView = NSImageView(image: NSImage(named: "user")!)
self.view.addSubview(imageView)
imageView.snp.makeConstraints{ make in
make.size.equalTo(66)
make.centerX.equalToSuperview()
make.top.equalTo(self.view.snp.top).offset(8)
}
}
说明:这里调用了NSImageView()的一个iamge属性的构造方法来初始化NSImageView,当然也可直接设置image属性。
1.6.3 加载来自于网络中的图片
var netImageView: NSImageView!
override func loadView() {
self.view = NSView(frame: NSRect(x: 0, y: 0, width: 500, height: 300))
}
private func initView(){
mView = NSView(frame: NSRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
netImageView = NSImageView()
netImageView.image = NSImage(contentsOf: URL(string: "https://car3.autoimg.cn/cardfs/product/g22/M0C/07/0D/760x570_0_q87_autohomecar__ChwFRWBOzXeAHKcbACihuYxvT-4081.jpg")!)
netImageView.wantsLayer = true
netImageView.layer?.cornerRadius = 5
self.view.addSubview(netImageView)
netImageView.snp.makeConstraints{ make in
make.width.equalTo(320)
make.height.equalTo(180)
make.centerX.equalToSuperview()
make.top.equalTo(self.view.snp.top).offset(15)
}
}
说明:NSImage类提供了根据URL来加载图片的构造方法,返回值可直接作为NSImageView的image属性。wantsLayer是由于NSImageView本身不提供剪切、透明度等方法,但可通过开启layer层进行设置的属性。cornerRadius是其layer层的裁剪半径。
本节代码:
//
// ImageViewController.swift
// Versatile
//
// Created by Eldest's MacBook on 2021/10/5.
//
import Cocoa
import SnapKit
class ImageViewController: NSViewController {
var mView: NSView!
var imageView: NSImageView!
var netImageView: NSImageView!
override func loadView() {
self.view = NSView(frame: NSRect(x: 0, y: 0, width: 500, height: 300))
}
private func initView(){
mView = NSView(frame: NSRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
imageView = NSImageView(image: NSImage(named: "user")!)
self.view.addSubview(imageView)
imageView.snp.makeConstraints{ make in
make.size.equalTo(66)
make.centerX.equalToSuperview()
make.top.equalTo(self.view.snp.top).offset(8)
}
netImageView = NSImageView()
netImageView.image = NSImage(contentsOf: URL(string: "https://car3.autoimg.cn/cardfs/product/g22/M0C/07/0D/760x570_0_q87_autohomecar__ChwFRWBOzXeAHKcbACihuYxvT-4081.jpg")!)
netImageView.wantsLayer = true
netImageView.layer?.cornerRadius = 5
self.view.addSubview(netImageView)
netImageView.snp.makeConstraints{ make in
make.width.equalTo(320)
make.height.equalTo(180)
make.centerX.equalToSuperview()
make.top.equalTo(self.imageView.snp.bottom).offset(15)
}
}
private func initConfig(){
self.title = "NSImageView"
}
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
initView()
initConfig()
}
}
运行截图: