【问题标题】:view.Layer.CornerRadius not working on UIScrollView subView of UIView Swift 3 iOSview.Layer.CornerRadius 不适用于 UIView Swift 3 iOS 的 UIScrollView 子视图
【发布时间】:2017-04-28 11:58:27
【问题描述】:

我希望视图有圆角,所以我添加了

cardView.layer.cornerRadius = 5

但是 cardView 的子视图,即 UIScrollView 的 sViewListing 似乎并没有受到它的影响。

我只想将 UIScrollView 的 topRight 和 topLeft cornerRadius 设置为 5,所以我也尝试使用 UIBezierPath 来掩盖它,但它似乎仍然不起作用。

以下是我尝试过的:

import UIKit

class TableViewCell: UITableViewCell {

@IBOutlet var cardView: UIView!
@IBOutlet var sViewListing: UIScrollView!
@IBOutlet var bookTitleListing: UILabel!
@IBOutlet var ratingListing: UIImageView!
@IBOutlet var locationListing: UILabel!
@IBOutlet var priceListing: UILabel!

override func awakeFromNib() {
    super.awakeFromNib()

    let path = UIBezierPath(roundedRect:sViewListing.bounds,
                            byRoundingCorners:[.topRight, .topLeft],
                            cornerRadii: CGSize(width: 5, height:  5))

    let maskLayer = CAShapeLayer()

    maskLayer.path = path.cgPath
    sViewListing.layer.mask = maskLayer
    cardView.backgroundColor = UIColor.white
    cardView.layer.cornerRadius = 5
    cardView.clipsToBounds = true
    cardView.layer.masksToBounds = false
    cardView.layer.shadowColor = UIColor.black.withAlphaComponent(0.3).cgColor
    cardView.layer.shadowOffset = CGSize(width: 0, height: 0)
    cardView.layer.shadowOpacity = 0.8

    }

}

我能做些什么来解决它?

【问题讨论】:

    标签: ios uiview uiscrollview swift3 rounded-corners


    【解决方案1】:

    将其进一步嵌套在另一个 UIView 中,将其命名为 maskedCardView 并添加代码

    maskCardView.layer.cornerRadius = 5
    maskCardView.layer.masksToBounds = true
    

    添加插座后

    @IBOutlet var maskCardView: UIView!
    

    这样,它在遮盖 UIScrollView 的左上角和右上角的同时保留阴影。这是完整的代码供参考。

    import UIKit
    
    class TableViewCell: UITableViewCell {
    
        @IBOutlet var cardView: UIView!
        @IBOutlet var sViewListing: UIScrollView!
        @IBOutlet var bookTitleListing: UILabel!
        @IBOutlet var ratingListing: UIImageView!
        @IBOutlet var locationListing: UILabel!
        @IBOutlet var priceListing: UILabel!
        @IBOutlet var maskCardView: UIView!
    
        override func awakeFromNib() {
            super.awakeFromNib()
    
            maskCardView.layer.cornerRadius = 5
            maskCardView.layer.masksToBounds = true
    
            cardView.backgroundColor = UIColor.white
            cardView.layer.cornerRadius = 5
            cardView.clipsToBounds = true
            cardView.layer.masksToBounds = false
            cardView.layer.shadowColor = UIColor.black.withAlphaComponent(0.3).cgColor
            cardView.layer.shadowOffset = CGSize(width: 0, height: 0)
            cardView.layer.shadowOpacity = 0.8
    
        }
    
    }
    

    无论如何,谢谢! :)

    【讨论】:

      【解决方案2】:

      制作:

      cardView.layer.masksToBounds = true
      sViewListing.layer.masksToBounds = true
      

      【讨论】:

      • 但这也消除了它的阴影.. :\
      猜你喜欢
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多