如何使用if / else函数提供UIImageView属性?

时间:2017-08-08 03:24:57

标签: swift function

如何将此功能削减至尽可能精益? if和else块之间的唯一区别是UiImageView的高度 - 如果为true,则高度为300,否则为150.我似乎无法找出在没有冗余代码的情况下重构此函数的最佳方法(如例如)或者具有非常长的功能,对于看起来相当简单的东西来说似乎太长了。

我离开了示例原油以明确意图。

class ProfileViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        banner(profileHasCustomBanner: false)

    }

    // banner
    func banner(profileHasCustomBanner: Bool) {
        if profileHasCustomBanner == true {
            let bannerImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 300))
            bannerImageView.image = #imageLiteral(resourceName: "the-banner")
            view.contentMode = .scaleAspectFit
            view.addSubview(bannerImageView)
        } else {
            let bannerImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 150))
            bannerImageView.image = #imageLiteral(resourceName: "the-banner")
            view.contentMode = .scaleAspectFit
            view.addSubview(bannerImageView)
        }
    }

}

1 个答案:

答案 0 :(得分:3)

根据条件定义height变量。

func banner(profileHasCustomBanner: Bool) {
    let height: CGFloat = profileHasCustomerBanner ? 300 : 150
    let bannerImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: height))
    bannerImageView.image = #imageLiteral(resourceName: "the-banner")
    view.contentMode = .scaleAspectFit
    view.addSubview(bannerImageView)
}