Swift如何自定义UIView
短信预约 -IT技能 免费直播动态提醒
小编给大家分享一下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? // 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”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341