Как загрузить UIView .xib с угловым радиусом и тенью в основной контроллер вида с помощью Swift - PullRequest
0 голосов
/ 13 октября 2019

В моем случае я пытаюсь создать пользовательский UIView с некоторыми атрибутами, такими как corner radius, shadow и button action title label. Это я поддерживаю в общем классе. Мне нужно звонить из нескольких разных viewcontroller. Я могу вызвать это из viewcontroller, но не знаю, как поддерживать тень, угловой радиус в классе customview. Как добиться этого, как всплывающее окно и вызов с нескольких контроллеров представления.

Мой класс CustomView

import UIKit

class ToastView: UIView {    

}

Мой CustomView .Xib

enter image description here

ViewController для вызова CustomView

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let customView = Bundle.main.loadNibNamed("ToastView", owner: self, options: nil)?.first as! ToastView
        view.addSubview(customView)
        customView.frame = CGRect(x:0, y: 100, width: view.frame.width-50, height: 55.0)
        customView.center = view.center
        customView.layer.borderColor =  colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1)
        customView.layer.borderWidth = 1.5
        customView.clipsToBounds = true
    }

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Вы можете использовать это Extension, чтобы добавить тень

import UIKit

class AnyViewController: UIViewController {
    //Your necessary methods & properties
    //call your xib here
}

extension UIView {

    func addShadow(offset: CGSize, color: UIColor, radius: CGFloat, opacity: Float)
    {
        layer.masksToBounds = false
        layer.shadowOffset = offset
        layer.shadowColor = color.cgColor
        layer.shadowRadius = radius
        layer.shadowOpacity = opacity

        let backgroundCGColor = backgroundColor?.cgColor
        backgroundColor = nil
        layer.backgroundColor =  backgroundCGColor
    }
}

Вы можете назвать это как

your_Custom_View.layer.cornerRadius = 20 //to add corner radius
your_Custom_View.addShadow(offset: CGSize(width: 0, height: 1), color: UIColor.black, radius: 2.0, opacity: 1.0) //to add shadow
0 голосов
/ 13 октября 2019

Возьмите атрибуты слоя, такие как shadow и cornerRadius логика, в сам класс view:

override func awakeFromNib() {
    super.awakeFromNib()
    layer.borderColor =  colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1)
    layer.borderWidth = 1.5
    layer.shadowOpacity = 1
}

Так что теперь у него всегда есть такие.

Обратите внимание, что clipsToBounds убийств shadow.

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