0
如何将此功能调整为尽可能精简? if和else块之间的唯一区别是UiImageView的高度 - 如果为true,高度为300,否则为150.我似乎无法找出在没有冗余代码的情况下重构此函数的最佳方法(如例如)或者一个非常长的函数,看起来很简单似乎太长了。如何使用if/else函数提供UIImageView属性?
我离开了粗略的例子,目的明确。
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)
}
}
}
@maddy什么对象是view.contentMode归因于?当我把它写成self.view.contentMode时,它会编译,但不会与任何其他对象一起编译,那么这里的自我究竟是什么? –
'view'和'self.view'指的是同样的东西 - 当前视图控制器的视图。 – rmaddy
但在视图控制器中可以有很多视图。如果我在这个横幅的下面创建另一个横幅,并且我希望它的contentMode是.scaleAspectFill,那么这个特定的视图是如何引用的? –