OS X开发.第一章,1.6,NSImageView

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()
    }

}

运行截图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值