Stack View ScaleAspectFit Mask Größe ändern in Swift

Ich maskiere ein Bild in einer Stapelansicht und aus irgendeinem Grund wird meine Maske nicht korrekt mit dem Bild ausgerichtet / in der Größe angepasst.

Hier ist eine Demonstration dessen, was passiert, wenn ich Instanzen dieses Bildes dynamisch in einer Stapelansicht hinzufüge, während die Größe jeder Unteransicht innerhalb ihrer Grenzen und Abstände geändert wird.

Wie Sie sehen können, behält die Maske die Originalgröße des Bildes und nicht die Größe der Version bei. Ich habe viele verschiedene Breiten- und Höhenvarianten ausprobiert, darunter das bounds.width, layer.frame.width, frame.width, frame.origin.x, etc, und hatte kein Glück.

Aktueller Code in 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()

Ich vermute, dass ich die falsche Breite und Höhe abrufe, um die Variablen für Mittelpunkt und Radius zu generieren, obwohl ich nach dem Testen der verschiedenen Breiten und Höhen, die ich finden kann, immer noch nicht die richtigen Größen erzielen kann. : -

Antworten auf die Frage(2)

Ihre Antwort auf die Frage