Я реализовал UIView с закругленным прямоугольником только в верхнем левом и верхнем правом углах, используя UIBezierPath. Но после этого, когда я добавляю тень к виду, он не показывает тень. Если я просто удалю закругленные углы безье, тогда тень работает отлично. Но теперь только закругленные углы появляются без тени. Вот мой кодShadow не работает с UIViewLayer с маской
override func drawRect(rect: CGRect)
{
super.drawRect(rect)
let shapeLayer : CAShapeLayer = CAShapeLayer(layer: centerView.layer)
shapeLayer.path = UIBezierPath(roundedRect: centerView.layer.bounds, byRoundingCorners: UIRectCorner.TopRight|UIRectCorner.TopLeft, cornerRadii: CGSizeMake(15,15)).CGPath
centerView.layer.mask = shapeLayer
centerView.layer.masksToBounds = false
centerView.layer.shadowOffset = CGSizeMake(0,-2)
centerView.layer.shadowRadius = 0.5
centerView.layer.shadowOpacity = 0.7
centerView.layer.shadowColor = UIColor(red: 0.867, green: 0.867, blue: 0.867, alpha: 1).CGColor
centerView.layer.shadowPath = UIBezierPath(roundedRect: centerView.layer.bounds, byRoundingCorners: UIRectCorner.TopRight|UIRectCorner.TopLeft, cornerRadii: CGSizeMake(15,15)).CGPath
}
Здесь я переопределить DrawRect в виде UITableViewCell и CENTERVIEW является подвид этого. Также я попробовал подклассифицировать UIView для centerView, что тоже не работает.
Имеет ли свойство маски и свойство maskToBounds объекта CALayer друг с другом?
Почему вы делаете это в drawRect? Вы даже не используете переменную 'rect' - этот вид вещей должен выполняться в' layoutSubviews'. По крайней мере ** макет **. Создание слоев должно выполняться во время начальной настройки - вы не должны создавать новый слой для каждого вызова ничьей. – luk2302
ОК. Но это не решает проблему. Тем не менее проблема остается –