Мне нужно округлить нижний левый и правый углы представления и опираться на то, что я нашел в Интернете. Я создал эту функцию внутри расширения UIview:
func setRoundedCorner(withRadius radius: CGSize, forCorners corners: UIRectCorner ) {
let viewShape = CAShapeLayer()
viewShape.bounds = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: self.bounds.width, height: self.bounds.height)
viewShape.position = self.center
viewShape.path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: radius).cgPath
self.layer.mask = viewShape
}
Теперь я столкнулся с двумя проблемами сэто решение;несмотря на то, что он отлично работает для статического вида, мой вид программно изменяет свою высоту, вызывая усечение вида;Я нашел обходной путь к этой проблеме, вспоминая каждый раз метод setRoundedCorner
, но с моей точки зрения это очень неудобно;Есть ли другой способ решить эту проблему?Еще одна проблема, которую мне сложнее решить, это набор теней.Я обычно использую этот метод:
func setShadow(height: CGFloat, width: CGFloat, opacity: Float, radius: CGFloat) {
self.layer.shadowPath = UIBezierPath(roundedRect: self.bounds, cornerRadius: self.layer.cornerRadius).cgPath
self.layer.shadowColor = UIColor.black.cgColor
self.layer.shadowOpacity = opacity
self.layer.shadowOffset = CGSize(width: width, height: height)
self.layer.cornerRadius = radius
self.layer.masksToBounds = false
}
Вместо этого вид выглядит так, когда под ним должна быть тень:
![enter image description here](https://i.stack.imgur.com/nZNyD.png)
Но в этой ситуации, похоже, не работает, не показывая тени вообще.Кто-нибудь может дать мне какой-нибудь совет?