У меня есть изображение в масках, которое используется UIBezierPath()
, и я хотел бы иметь границу вокруг маскированной части, а не оригинальное изображение. Я подошел так близко к моему (бесчисленному количеству) попытке с помощью проб и ошибок и, неустанно, отказался. Любой более простой способ сделать это?Swift - Border Inside Masked Image
Это, как далеко я пришел к своей цели:
Я хотел бы иметь границ заходят внутрь! :-(
Swift 2 Код:
let picture = UIImageView(image: UIImage(named: "myPicture.png"))
picture.layer.contentMode = .ScaleAspectFit
picture.layer.clipsToBounds = true
let maskLayer = CAShapeLayer()
picture.layer.mask = maskLayer
maskLayer.frame = CGRect(origin: CGPointZero, size: picture.image.size)
let radius = picture.size.width/2
let center = CGPoint(x: picture.size.width/2, y: picture.size.height/2)
let path = UIBezierPath()
path.moveToPoint(center)
path.addArcWithCenter(center, radius: radius, startAngle: 0, endAngle: CGFloat(M_PI*2.0*0.2), clockwise: true)
maskLayer.path = path.CGPath
picture.layer.mask = maskLayer
picture.layer.borderWidth = 3
picture.layer.borderColor = UIColor.purpleColor().CGColor
picture.layer.cornerRadius = picture.layer.bounds.width/2
Вы серьезно спасатель! Ваше решение было действительно близко к моей последней попытке, прежде чем я увидел ваше сообщение, и я не знал, почему он не работал, пока я не понял, что в моем другом вопросе «path.closePath()» отсутствовал из вашего невероятного класса MaskedImageView. Теперь я вижу его значение. Спасибо огромное! – theflarenet
@theflarenet ah yes, в то время как 'CAShapeLayer' способен вычислять область заполнения без' path.closePath() '- ему нужно полностью погладить путь. Ради завершения я уточню свой другой ответ (хотя в этом случае это не имеет значения). Рад помочь как всегда :) – Hamish