view.Layer.CornerRadius 无法处理 UIView 的 UIScrollView 子视图 Swift 3 iOS
view.Layer.CornerRadius not working on UIScrollView subView of UIView Swift 3 iOS
我希望视图有圆角所以我添加了
cardView.layer.cornerRadius = 5
但是 cardView 的子视图,即 UIScrollView
的 sViewListing 似乎不受它的影响。
我只想将 UIScrollView
的右上角和左上角 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
}
}
我该如何解决?
成功:
cardView.layer.masksToBounds = true
sViewListing.layer.masksToBounds = true
将其进一步嵌套在另一个 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
}
}
无论如何谢谢! :)
这是我的方法。
@IBOutlet weak var roundConnerView: UIScrollView! {
didSet {
roundConnerView.layer.cornerRadius = 10
roundConnerView.layer.masksToBounds = true
}
}
我希望视图有圆角所以我添加了
cardView.layer.cornerRadius = 5
但是 cardView 的子视图,即 UIScrollView
的 sViewListing 似乎不受它的影响。
我只想将 UIScrollView
的右上角和左上角 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
}
}
我该如何解决?
成功:
cardView.layer.masksToBounds = true
sViewListing.layer.masksToBounds = true
将其进一步嵌套在另一个 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
}
}
无论如何谢谢! :)
这是我的方法。
@IBOutlet weak var roundConnerView: UIScrollView! {
didSet {
roundConnerView.layer.cornerRadius = 10
roundConnerView.layer.masksToBounds = true
}
}