簡體   English   中英

我可以在此使用“ for”循環嗎?

[英]Can i use 'for' loop on this?

我想知道我是否可以為此代碼使用“ for”循環。 請原諒我,我知道這是一個a腳的問題,但是我是新手。 希望你們能在這里幫助我!

非常感謝大家!

碼:

override func viewDidLoad() {
    super.viewDidLoad()

    // Background color

    let kolorTla = UIColor(red: 0/255.0, green: 66/255.0, blue: 132/255.0, alpha: 1.0)
    view.backgroundColor = kolorTla

    // Icons border

    ramka.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
    ramka.layer.cornerRadius = 5.0
    ramka.layer.borderWidth = 3


    // Image

    skill1.image = UIImage(named: "english")

    // Image border

    skill1.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
    skill1.layer.cornerRadius = 5.0
    skill1.layer.borderWidth = 3
    skill1.contentMode = .scaleAspectFit

    // Image

    skill2.image = UIImage(named: "literature")

    // Image border

    skill2.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
    skill2.layer.cornerRadius = 5.0
    skill2.layer.borderWidth = 3
    skill2.contentMode = .scaleAspectFit

    // Image

    skill3.image = UIImage(named: "idea1")

    // Image border

    skill3.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
    skill3.layer.cornerRadius = 5.0
    skill3.layer.borderWidth = 3
    skill3.contentMode = .scaleAspectFit

是的你可以。 將Skill1,skill2和skill3放置在數組中,並像這樣迭代它:

var objectArray = [skill1,skill2,skill3]


for object in objectArray
{
object.layer = ....


}

您可以在某種程度上。 您只需要定義一個項目數組並遍歷它們。 不知道它是否為您節省了很多代碼,但確實使它更容易理解。

override func viewDidLoad() {
    super.viewDidLoad()

    // Background color
    let kolorTla = UIColor(red: 0/255.0, green: 66/255.0, blue: 132/255.0, alpha: 1.0)
    view.backgroundColor = kolorTla

    // Icons border
    ramka.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
    ramka.layer.cornerRadius = 5.0
    ramka.layer.borderWidth = 3

    // Set Image
    skill1.image = UIImage(named: "english")
    skill2.image = UIImage(named: "literature")
    skill3.image = UIImage(named: "idea1")

    // Set Image border
    for skill in [skill1, skill2, skill3] {
        skill.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
        skill.layer.cornerRadius = 5.0
        skill.layer.borderWidth = 3
        skill.contentMode = .scaleAspectFit
    }
}

至少在我看來,更好的方法是創建一個簡單的函數來處理此問題。

override func viewDidLoad() {
    super.viewDidLoad()

    // Background color
    let kolorTla = UIColor(red: 0/255.0, green: 66/255.0, blue: 132/255.0, alpha: 1.0)
    view.backgroundColor = kolorTla

    // Icons border
    ramka.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
    ramka.layer.cornerRadius = 5.0
    ramka.layer.borderWidth = 3
    // Set Images
    setupImageView(imageView: skill1, imageName: "english")
    setupImageView(imageView: skill2, imageName: "literature")
    setupImageView(imageView: skill3, imageName: "idea1")
}

func setupImageView(imageView: UIImageView, imageName: String) {
    // Set Image
    imageView.image = UIImage(named: imageName)
    // Set Image border
    imageView.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
    imageView.layer.cornerRadius = 5.0
    imageView.layer.borderWidth = 3
    imageView.contentMode = .scaleAspectFit
}

雖然您不能使用for循環來修改變量名並在變量名之間循環,但您可以將skill實例放入數組中並以此方式進行循環。

...

skill1.image = UIImage(named: "english")
skill2.image = UIImage(named: "literature")
skill3.image = UIImage(named: "idea1")

let skills = [skill1, skill2, skill3]

for skill in skills {
    skill.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
    skill.layer.cornerRadius = 5.0
    skill.layer.borderWidth = 3
    skill.contentMode = .scaleAspectFit
}

您可以擴展您的ImageView

extension UIImageView {
   func addCustomLayer() { // add arguments to function if you wish to change the value assigned 
         self.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
        self.layer.cornerRadius = 5.0
        self.layer.borderWidth = 3
        self.contentMode = .scaleAspectFit
    }
   } 
}

然后在每個UIImageView上調用該方法

for each in [skill1, skill2, skill3] {
    each.addCustomLayer()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM