Как складывать округленные представления в верхней части каждой страницы в контроллере представления в ios swift? - PullRequest
0 голосов
/ 27 января 2020

У меня есть дизайн, который я хочу реализовать, когда три скругленных вида сложены друг на друга. Я не знаю, как реализовать это, так как когда я помещаю их друг напротив друга, это не работает. Я использую раскадровку и настраиваю настройки видов программно. Как это может быть достигнуто?

У меня такой дизайн, который слишком сложно попробовать.

This is the design I have that is too hard to try and implement.

1 Ответ

5 голосов
/ 27 января 2020

Хорошо, поэтому я немного поиграл с раскадровкой, и мне удалось воссоздать то, что вы хотите.

Результат enter image description here

Раскадровка enter image description here

И, наконец, код

import UIKit

class ViewController: UIViewController {


    @IBOutlet weak var redView: UIView!
    @IBOutlet weak var yellowView: UIView!
    @IBOutlet weak var blueView: UIView!


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        UIView.animate(withDuration: 0.0) {
            UIView.addCornerRadiusToViews(views: [self.redView, self.yellowView,self.blueView], cornerRadius: 50)
            self.redView.dropShadow(color: UIColor.black, offSet: CGSize(width: 5.0, height: 5.0))
            self.yellowView.dropShadow(color: UIColor.black, offSet: CGSize(width: 5.0, height: 5.0))
            self.blueView.dropShadow(color: UIColor.black, offSet: CGSize(width: 5.0, height: 5.0))


            self.view.layoutIfNeeded()
        }
    }
}

extension UIView {

    func dropShadow(color: UIColor, opacity: Float = 0.5, offSet: CGSize, radius: CGFloat = 50, scale: Bool = true) {
        layer.masksToBounds = false
        layer.shadowColor = color.cgColor
        layer.shadowOpacity = opacity
        layer.shadowOffset = offSet
        layer.shadowRadius = radius
        layer.shadowPath = UIBezierPath(rect: self.bounds).cgPath
        layer.shouldRasterize = true
        layer.rasterizationScale = scale ? UIScreen.main.scale : 1
    }

    static func addCornerRadiusToViews(views: [UIView], cornerRadius: CGFloat) {
        views.forEach { (view) in
            view.layer.cornerRadius = cornerRadius
            view.layer.masksToBounds = true
        }
    }

}

Вы можете изменить значения roundCorner и значения смещения тени, чтобы получить идеальный пиксель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...