【问题标题】:Add drop shadow to xib view in Swift在 Swift 中向 xib 视图添加阴影
【发布时间】:2020-02-27 05:46:29
【问题描述】:

我从 Xib 文件中添加了一个卡片视图,当点击它时,它会从下向上滑动以显示视图。

我正在尝试自定义视图并为视图添加阴影。

cornerRadius 否则工作正常。

func setupCard() {


            menuCardVC = MenuCardVC(nibName:"MenuCardVC", bundle:nil)

            menuCardVC.view.layer.shadowOpacity = 0.50
            menuCardVC.view.layer.shadowRadius = 12
            menuCardVC.view.layer.shadowColor = UIColor.black.cgColor
            menuCardVC.view.layer.shadowOffset = CGSize.zero
            menuCardVC.view.layer.cornerRadius = 25

            self.addChild(menuCardVC)
            self.view.addSubview(menuCardVC.view)

            menuCardVC.view.frame = CGRect(x: 0, y: self.view.frame.height - cardHandleAreaHeight, width: self.view.bounds.width, height: cardHeight)

            menuCardVC.view.clipsToBounds = true

            let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(VenueDetailsVC.handleCardTap(recognzier:)))
            let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(VenueDetailsVC.handleCardPan(recognizer:)))

            menuCardVC.handleArea.addGestureRecognizer(tapGestureRecognizer)
            menuCardVC.handleArea.addGestureRecognizer(panGestureRecognizer)


        }//end setupCard

【问题讨论】:

    标签: swift uiview


    【解决方案1】:

    去掉下面这行代码,

    menuCardVC.view.clipsToBounds = true
    

    【讨论】:

    • 当我删除那条线时,阴影有效,但圆角无效?,如何添加圆角?
    【解决方案2】:

    由于您的视图层次结构很简单,您可以使用以下技术。此外,您不需要使用 clipsToBounds。

    let superview = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
    superview.backgroundColor = .white
    
    let subview = UIView(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
    subview.backgroundColor = .red
    // First provide the corner radius.
    subview.layer.cornerRadius = 8
    // Then provide the shadow parameters.
    subview.layer.shadowOpacity = 1
    // ...
    // Do not clip to bounds since it will clip the shadow.
    // ...
    superview.addSubview(subview)
    

    【讨论】:

    • 当我删除 clipsToBounds 时,我得到了阴影,但随后又丢失了 cornerRadius。我两个都想要?
    • 您是否尝试过先给出角半径,然后是我在答案中提到的阴影。
    • 是的,我先指定了cornerRadius,然后指定了shadowOpacity 参数,还删除了clipsToBounds 行。这会导致显示阴影但没有角半径。我正在努力锻炼为什么:/
    • 尝试将答案中的代码粘贴到游乐场或一些随机项目中。您将能够找到同时具有 shadow 和cornerRadius 的子视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多