加载自定义外观值

时间:2016-10-15 20:09:22

标签: ios swift

我想知道哪个函数,例如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()。我已经阅读了很多问题,他们会问他们之间有什么不同,但我仍然不知道哪里最适合加载外观。

1 个答案:

答案 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