storyboard搭建项目_swift项目第五天:swift中storyBoard Reference搭建主界面
import UIKit/*總結:1:lazy用于懶加載,只能用var來對變量進行懶加載,有兩種方式:1:lazy var first = NSArray(objects: "1","2") 2:閉包形式:
lazy var second:String = {
return "second"
}()
例子:
lazy var imageArr = ["tabbar_home_highlighted","tabbar_message_center_highlighted","tabbar_discover_highlighted","tabbar_profile_highlighted"]
lazy var imageArr = {
return ["tabbar_home_highlighted","tabbar_message_center_highlighted","tabbar_discover_highlighted","tabbar_profile_highlighted"]
}();
2:1:設置tabbaritem的代碼都必須放在viewWillAppear里,若是在viewDidLoad里,則設置好的item又會在viewWillAppear方法里被系統調整回來 2:for循環遍歷,1:要是想獲得下標值就用區間遍歷 for i in 0..
3:要想類中定義的屬性不希望外界來訪問,就定義為private,或是fileprivate,private修飾的屬性方法,只能在當前類中訪問,在同一個文件中定義不同的類就不能在訪問另一個類中private修飾的方法或是屬性,但是屬性或是方法用fileprivate可以在當前文件任何類中進行訪問*/
classRHTabBarViewController: UITabBarController {//lazy var imageArr = ["tabbar_home_highlighted","tabbar_message_center_highlighted","tabbar_discover_highlighted","tabbar_profile_highlighted"]
///1:懶加載圖片數組
fileprivate lazy var imageArr ={return ["tabbar_home_highlighted","tabbar_message_center_highlighted","","tabbar_discover_highlighted","tabbar_profile_highlighted"]
}();///2:懶加載中間按鈕
fileprivate lazy var centerButton =UIButton()overridefunc viewDidLoad() {
super.viewDidLoad()//MARK:-2:添加中間按鈕
setupCenterButton()
}overridefunc viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)//MARK:-1:設置tabbarItem的高亮圖片
setupTabbarItems()
}
}/**
總結:1:extension表示擴展,在定義的類中:RHTabBarViewController,設置該類的擴展,extension RHTabBarViewController {},若是該類有遵守協議關系的時候,繼承的協議就在RHTabBarViewController后面加:后面寫遵守的協議 2:一般extension擴展用于在某個類中封裝方法,在viewDidLoad方法中抽方法封裝調用,將封裝的方法寫在extension的擴展類中,在viewDidLoad直接調用
2:一般在聲明的類class中定義屬性:1:private,或是filePrivate來修飾,并且一般采用懶加載(1:直接初始化 2:閉包懶加載,{return:一個值}()),若不是懶加載,定義屬性變量的時候,必須定義初始化有值,要不定義成可選類型,在后面進行賦值,否則會被報錯。 2:在viewDidload中抽方法封裝調用,將封裝的方法寫在extension的擴展類中,在定義方法的時候,也是private,fileprivate來選擇修飾,定義有返回值或是無返回值的函數。2:定義的函數中涉及到外部參數與內部參數:在swift中第一個參數默認為內部參數,_+空格+參數名組成,默認從第二個參數開始,既是外部參數又是內部參數,若是想讓某個參數成為內部參數,就直接在函數中用_+空格+參數名修飾就可以 3:函數的默認參數,在封裝的函數中,也可以給參數設定默認參數,則此時,外部調用就不會顯示默認參數,而在參數內部自己可以拿到默認參數的值:如定義的全局打印:fileName:String = #file
func DLog (message: T,fileName:String = #file,funcName:String = #function,lineNum:Int = #line) {
#if DEBUG
let file = (fileName as NSString).lastPathComponent;
print("\(file):\(funcName):\(lineNum):\("打印內容"):\(message)")
#endif
}
3:設置tabbar上的高亮圖片:1:tabBar.items為一個可選類型的數組,但是能保證其一定有值,所以可以進行強制解包,若是可選類型的變量能確定一定有值的話就對其進行強制解包 2:創建UIImage的對象:item.selectedImage = UIImage(named: imageArr[i])
4:添加中間的加號按鈕:1:懶加載完控件后,首先在方法中將控件添加到父控件中,在同一個類中屬于該類的方法可以不去調用self,tabBar.addSubview(centerButton) 2:設置按鈕的背景圖片centerButton.setBackgroundImage, centerButton.setImage,第二個參數為一個枚舉值,枚舉值調用就用點語法調用枚舉類型,.normal,.highlighted 3:設置按鈕的frame:centerButton.sizeToFit()
讓按鈕的大小等于按鈕內容的大小。設置center的時候,設置的是tabbar的centerx,中心點y值為tabba高度的一半*/extension RHTabBarViewController {///1:添加中間的加號按鈕
fileprivate func setupCenterButton() {//1:添加按鈕
tabBar.addSubview(centerButton)//2:設置圖片
centerButton.setBackgroundImage(UIImage(named: "tabbar_compose_button"), for: .normal)
centerButton.setBackgroundImage(UIImage(named:"tabbar_compose_button_highlighted"), for: .highlighted)
centerButton.setImage(UIImage(named:"tabbar_compose_icon_add"), for: .normal)
centerButton.setImage(UIImage(named:"tabbar_compose_icon_add_highlighted"), for: .highlighted)//3:設置frame
centerButton.sizeToFit()
centerButton.center= CGPoint(x: tabBar.center.x, y: tabBar.bounds.size.height * 0.5)
}///2:設置的是tabbar上的高亮圖片
fileprivate func setupTabbarItems() {for i in 0..
let item= tabBar.items![i]if i == 2{
item.isEnabled= false
continue}
item.selectedImage=UIImage(named: imageArr[i])
}
}
}
總結
以上是生活随笔為你收集整理的storyboard搭建项目_swift项目第五天:swift中storyBoard Reference搭建主界面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php mysql 作业计划,关于php
- 下一篇: 列注释_【EXCEL检查问题】:如何快速