Swift代码自定义UIView实现示例

Swift自定义View和OC自定义View的原理都是一样的,重写init()方法或initWithFrame()方法,下面简单说说如何自定义swift UIView

主要是重写init(frame:CGRect)方法,其中required init?(coder aDecoder: NSCoder) 是必不可少的,swift语言强制要求的

//
//  LoginImgFieldView.swift
//  SmartMilk
//
//  Created by mac on 2017/6/9.
//  Copyright  2017年 mac. All rights reserved.
//
import UIKit 
let G_HEADIMAGE_HEIGHT:CGFloat = 30 
class LoginImgFieldView: UIView {
  var headImgView:UIImageView?
  var field:UITextField?
  var line:UILabel?            
  /*
  // Only override draw() if you perform custom drawing.
  // An empty implementation adversely affects performance during animation.
  override func draw(_ rect: CGRect) {
      // Drawing code
  }
  */
//    override init(){
//        super.init()
//        setupSubViews()
//    }    
  override init(frame:CGRect){
      super.init(frame: frame)
      setupSubViews()
  }    
  required init?(coder aDecoder: NSCoder) {
      fatalError("init(coder:) has not been implemented")
  }    
  func setupSubViews() {        
      let frame = self.bounds
      //uiimageVIew
      headImgView = UIImageView(frame:CGRect(x:0,y:0,width:G_HEADIMAGE_HEIGHT,height:G_HEADIMAGE_HEIGHT))
      headImgView?.backgroundColor = UIColor.blue
      
      //uiTextField
      field = UITextField(frame:CGRect(x:0,y:0,width:100,height:G_HEADIMAGE_HEIGHT))
//        field?.font = UIFont.systemFont(ofSize: 15)        
      //uiLabel        
      line = UILabel(frame: CGRect(x:0,y:frame.size.height-1,width:frame.size.width,height:1))
      line?.backgroundColor = UIColor.orange        
      self.addSubview(headImgView!)
      self.addSubview(field!)
      self.addSubview(line!)
  }       
  override func layoutSubviews() {
      super.layoutSubviews()        
      let frame = self.bounds
      let imgY = (frame.size.height - G_HEADIMAGE_HEIGHT)/2
      headImgView?.frame = CGRect(x:0,y:imgY,width:G_HEADIMAGE_HEIGHT,height:G_HEADIMAGE_HEIGHT)        
      //field
      let fieldx = G_HEADIMAGE_HEIGHT+5
      let fieldWidth = frame.size.width - fieldx        
      field?.frame = CGRect(x: fieldx, y: imgY, width: fieldWidth, height: G_HEADIMAGE_HEIGHT)        
      //label
      var lineFrame = line?.frame
      lineFrame?.origin.y = frame.size.height - 2
      lineFrame?.size.width = frame.size.width        
      line?.frame = lineFrame!
      
  }

}

关于Swift代码自定义UIView实现示例的文章就介绍至此,更多相关Swift自定义UIView内容请搜索编程宝库以前的文章,希望大家多多支持编程宝库

场景:我们在使用app的时候,特别是显示多张图片的时候,都会点击图片并进行浏览,比如QQ、微信,好友发表的动态,我们都会点击进去查看原图。现在很多app都支持图片浏览功能,这样更加方便 ...