我想知道哪个函数,例如viewDidLoad
等...是加载自定义视图属性(如图像边框高度,颜色,所有外观)的最佳方法。
例如,我在cellForRowAtIndexPath
中添加了这些自定义值,我认为这不是最好的方法:
// corner radius
cell.feedImageView.layer.cornerRadius = 10
// border
cell.feedImageView.layer.borderWidth = 2.0
cell.feedImageView.layer.borderColor = UIColor.black.cgColor
cell.feedImageView.layer.masksToBounds = true
我在viewDidLoad中加载了这些navigationBar
外观,我在很多视图中使用它:
navigationController?.navigationBar.barTintColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.5)
self.navigationItem.leftBarButtonItem = nil
navigationController?.navigationBar.isTranslucent = true
let fontDictionary = [ NSForegroundColorAttributeName:UIColor.white ]
self.navigationController?.navigationBar.titleTextAttributes = fontDictionary
self.navigationController?.navigationBar.tintColor = UIColor(red: 0.184, green: 0.996, blue: 0.855, alpha: 1.00)
再次提出问题,我应该在哪里加载外观值?我问它是因为我现在处于图像边界加载之前的情况......
有很多功能,例如viewDidLoadAppearance()
,ViewDidload()
。我已经阅读了很多问题,他们会问他们之间有什么不同,但我仍然不知道哪里最适合加载外观。
答案 0 :(得分:1)
您基本上有3种不同的选择。
1)在viewDidAppear()
func完全实例化之后,您可以在vieDidLayoutSubviews()
func中获取或设置这些值。
2)您可以在var didConfigureUI = false
func viewDidLayoutSubviews() {
if !didConfigureUI {
didConfigureUI = true
updateUI()
}
}
函数中获取或设置它们并设置bool以检查您的任务是否已被调用。
layoutIfNeeded()
3)您可以使用override func viewDidLoad() {
super.viewDidLoad()
xy.view.layoutIfNeeded() // <- This will update your initial view frames
updateUI()
}
在viewDidLoad中获取或设置它们:
func updateUI() {
//f.e feedImageView.layer.masksToBounds = true
}
你的功能做任何事情:
layoutIfNeeded()
要在你的cellForRowAtIndexPath中执行此操作,您也可以使用 cellForRowAtIndexPath {
let cell = tableView.blahblahcell
updateUICell(cell.feedImageView)
}
func updateUICell(imageView: UIImageView) {
imageView.layoutIfNeeded()
imageView.layer.cornerRadius = 10
imageView.layer.borderWidth = 2.0
imageView.layer.borderColor = UIColor.black.cgColor
imageView.layer.masksToBounds = true
}
执行此类操作。
init
UIViewController awakeFromNib
loadView // your pictureImageView is loaded here
UIView awakeFromNib
UIViewController viewDidLoad
viewWillAppear
viewDidAppear // the properties of your pictureImageView are available here
回答关于生命圈的最后一个问题:
圈子是:
Settings/Preferences