0
できるだけリーンになるようにこの機能をトリミングするにはどうすればよいですか? ifとelseブロックの唯一の違いは、UiImageViewの高さです。もしtrueならheightは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'は同じもの、つまり現在のView Controllerのビューを参照しています。 – rmaddy
しかし、ビューコントローラには多くのビューがあります。このバナーのすぐ下に別のバナーを作成し、contentModeを.scaleAspectFillにしたい場合、その特定のビューはどのように参照されますか? –