Swift - дубликат UIView - PullRequest
       7

Swift - дубликат UIView

0 голосов
/ 01 ноября 2018

Я сейчас пытаюсь добиться эффекта мерцания в Swift. Для этого я создаю серый UIView, а другой поверх него с эффектом. Проблема в том, что я пишу один и тот же код дважды ...

let profileShimmerView = UIView()
profileShimmerView.backgroundColor = whiteClear
profileShimmerView.layer.cornerRadius = 20
profileShimmerView.clipsToBounds = true

let profileView = UIView()
profileView.backgroundColor = grayClear
profileView.layer.cornerRadius = 20
profileView.clipsToBounds = true

self.addSubview(profileView)
self.addSubview(profileShimmerView)

profileShimmerView.translatesAutoresizingMaskIntoConstraints = false
profileShimmerView.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 45).isActive = true
profileShimmerView.topAnchor.constraint(equalTo: self.topAnchor, constant: 15).isActive = true
profileShimmerView.widthAnchor.constraint(equalToConstant: 40).isActive = true
profileShimmerView.heightAnchor.constraint(equalToConstant: 40).isActive = true

profileView.translatesAutoresizingMaskIntoConstraints = false
profileView.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 45).isActive = true
profileView.topAnchor.constraint(equalTo: self.topAnchor, constant: 15).isActive = true
profileView.widthAnchor.constraint(equalToConstant: 40).isActive = true
profileView.heightAnchor.constraint(equalToConstant: 40).isActive = true

Есть ли более простой способ добиться этого?

1 Ответ

0 голосов
/ 01 ноября 2018

Вы можете создать функцию

func shared(color : UIColor)->UIView {

    let v = UIView()
    v.backgroundColor = color
    v.layer.cornerRadius = 20
    v.clipsToBounds = true
    self.addSubview(v)
    v.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([

        v.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 45),
        v.topAnchor.constraint(equalTo: self.topAnchor, constant: 15),
        v.widthAnchor.constraint(equalToConstant: 40),
        v.heightAnchor.constraint(equalToConstant: 40)

    ]) 

   return v
}
...