蔡德多儿 發表於 2021-10-28 11:42:55

Swift代码自定义UIView实现示例

<p>Swift自定义View和OC自定义View的原理都是一样的,重写init()方法或initWithFrame()方法,下面简单说说如何自定义swift UIView</p>
<p>主要是重写init(frame:CGRect)方法,其中required init&#63;(coder aDecoder: NSCoder) 是必不可少的,swift语言强制要求的</p>
<div class="jb51code">
<pre class="brush:plain;">
//
//LoginImgFieldView.swift
//SmartMilk
//
//Created by mac on 2017/6/9.
//Copyright &copy; 2017年 mac. All rights reserved.
//
import UIKit
let G_HEADIMAGE_HEIGHT:CGFloat = 30
class LoginImgFieldView: UIView {
    var headImgView:UIImageView&#63;
    var field:UITextField&#63;
    var line:UILabel&#63;            
    /*
    // 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&#63;(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&#63;.backgroundColor = UIColor.blue
      
      //uiTextField
      field = UITextField(frame:CGRect(x:0,y:0,width:100,height:G_HEADIMAGE_HEIGHT))
//      field&#63;.font = UIFont.systemFont(ofSize: 15)      
      //uiLabel      
      line = UILabel(frame: CGRect(x:0,y:frame.size.height-1,width:frame.size.width,height:1))
      line&#63;.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&#63;.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&#63;.frame = CGRect(x: fieldx, y: imgY, width: fieldWidth, height: G_HEADIMAGE_HEIGHT)      
      //label
      var lineFrame = line&#63;.frame
      lineFrame&#63;.origin.y = frame.size.height - 2
      lineFrame&#63;.size.width = frame.size.width      
      line&#63;.frame = lineFrame!
      
    }

}</pre>
</div>
<p>到此这篇关于Swift代码自定义UIView实现示例的文章就介绍到这了,更多相关Swift自定义UIView内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>Vuex,iView UI面包屑导航使用扩展详解</li><li>vue+iview/elementUi实现城市多选</li><li>详解基于iview-ui的导航栏路径(面包屑)配置</li><li>iOS中一行代码实现 UIView 镂空效果</li><li>iOS布局渲染之UIView方法的调用时机详解</li><li>iView&nbsp;UI&nbsp;FORM&nbsp;动态添加表单项校验规则写法实例</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: Swift代码自定义UIView实现示例