1.未登录各个界面的展示
/* * 设置未登录界面 * isHome: 是否是主页 * image: 图片的名字 * message: 文本的信息 */ func setupVistorInfo(isHome:Bool,image:String,message:String) { // 如果不是首页,就隐藏转盘 iconView.isHidden = !isHome // 修该中间图标 homeIcob.image = UIImage(named:image) // 修改文本 messageLabel.text = message messageLabel.height = NSString.JKtextStringHeight(string:message as NSString, size: CGSize(width:224,height:1000), fontSize: 14) loginButton.y = messageLabel.frame.maxY + 10 zhuceBtn.y = messageLabel.frame.maxY + 10 // 如果是首页就执行下面的动画 if isHome { startAnimation() } }
2. 首页核心动画的调用
// MARK: 在这里执行动画 private func startAnimation(){ // 1.创建动画 let anim = CABasicAnimation(keyPath: "transform.rotation") // 2.设置动画属性 anim.toValue = 2 * M_PI anim.duration = 20 anim.repeatCount = MAXFLOAT // 特别添加,该属性默认为YES,代表动画只要执行完毕就移除,false 代表不移除 anim.isRemovedOnCompletion = false // 3.将动画添加到图层上 iconView.layer.add(anim, forKey: nil) }
3.在各个页面的调用方式
if !userLogin { vistorView?.setupVistorInfo(isHome: true, image: "visitordiscover_feed_image_house", message: "关注一些人,回这里看看有什么惊喜") }
4.在此加一下关于传一段文字返回其高度和宽度的计算
import UIKit extension NSString { // MARK: 1.返回文字的高度 static func JKtextStringHeight(string: NSString, size: CGSize, fontSize: CGFloat) -> CGFloat { return string.boundingRect(with: size, options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: fontSize)], context: nil).size.height } // MARK: 2.返回文字的宽度 static func JKtextStringWidth(string: NSString, size: CGSize, fontSize: CGFloat) -> CGFloat { return string.boundingRect(with: size, options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: fontSize)], context: nil).size.width } }
5.在swift里面如何定义协议
// 1.swift如何定义协议, 必须遵守 NSObjectProtocol protocol VisitorViewDelete: NSObjectProtocol{ // 登录点击 func logionWillClick() // 注册点击 func registerWillClick() } // 2. 定义一个对象保存delegate,必须用weak 防止循环引用 weak var delegate: VisitorViewDelete? // 3.方法的触发 delegate?.registerWillClick() // 4.遵守协议 VisitorViewDelete // 5.挂代理 customView.delegate = self // 6.方法的实现 // MARK: 登录按钮的点击事件 func logionWillClick() { } // MARK: 注册按钮的点击事件 func registerWillClick() { }
6.导航栏的设置
// 设置导航条的颜色 最好是设置外观来设置全局的颜色 //navigationController?.navigationBar.tintColor = UIColor.orange navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: UIBarButtonItemStyle.plain, target: self,action: #selector(BaseViewController.registerWillClick)) navigationItem.rightBarButtonItem = UIBarButtonItem(title: "登录", style: UIBarButtonItemStyle.plain, target: self,action: #selector(BaseViewController.logionWillClick))
7. 设置导航条和工具条的外观,因为外观设定全局有效,所以应该在程序一进来就设定,在AppDelegate里面设施
UINavigationBar.appearance().tintColor = UIColor.orange UITabBar.appearance().tintColor = UIColor.orange