Stack View ScaleAspectFit Маска Изменение размера в Swift
Я маскирую изображение в виде стека, и по какой-то странной причине моя маска неправильно выравнивается / изменяется по размеру изображения.
Вот демонстрация того, что происходит, когда я динамически добавляю экземпляры этого изображения в виде стека, в то время как каждое подпредставление изменяется в пределах своих границ и промежутков.
Как вы можете видеть, маска сохраняет исходный размер изображения, а не измененную версию. Я пробовал много разных вариантов ширины и высоты, включаяbounds.width, layer.frame.width, frame.width, frame.origin.xи т. д., и не повезло.
Текущий код в Swift 2:
let testPicture:UIImageView = UIImageView(image: UIImage(named: "myPicture"))
testPicture.contentMode = .ScaleAspectFit
testPicture.layer.borderWidth = 1
testPicture.clipsToBounds = true
testPicture.layer.masksToBounds = true
view.layer.addSublayer(shapeLayer)
var width = testPicture.layer.frame.width
var height = testPicture.layer.frame.height
let center = CGPointMake(width/2, height/2)
let radius = CGFloat(CGFloat(width) / 2)
// Mask
let yourCarefullyDrawnPath = UIBezierPath()
yourCarefullyDrawnPath.moveToPoint(center)
yourCarefullyDrawnPath.addArcWithCenter(center,
radius: radius,
startAngle: 0,
endAngle: CGFloat( (0.80*360.0) * M_PI / 180.0),
clockwise: true)
yourCarefullyDrawnPath.closePath()
let maskPie = CAShapeLayer()
maskPie.frame = testPicture.layer.bounds
testPicture.clipsToBounds = true
testPicture.layer.masksToBounds = true
maskPie.path = yourCarefullyDrawnPath.CGPath
testPicture.layer.mask = maskPie
// Add Into Stackview
self.myStackView.addArrangedSubview(testPicture)
self.myStackView.layoutIfNeeded()
Я подозреваю, что я выбираю неправильную ширину и высоту, чтобы сгенерировать переменные центра и радиуса, хотя после попытки найти все различные ширины и высоты, которые я могу найти, я все еще не могу получить правильные размеры. :-(