Авторазмер подпредставлений после CGAffineTransform не работает
У меня проблема с изменением размера подпредставлений после применения двух преобразований: CGAffineTransformMakeRotation и CGAffineTransformScale.
Скриншот, который представляет проблему.
Как вы можете видеть, #1 - это вид карты, в котором содержится подпредставление № 2. После применения обоих преобразований (при перетаскивании) подпредставление корректно не изменяется.
Ниже приведен код, который используется в CardView:
/**
* This code is placed within the CardView class
* in the touchedMoved:touches:withEvent method.
*/
// Dictates the rotation strength based on the distance from center and card width.
let rotationStrength = min(self.distanceFromCenter.x / CGRectGetWidth(self.bounds), CardView.rotationMax)
// Degree change in radians.
let rotationAngle = CardView.rotationAngle * rotationStrength
// Amount the height/width changes when you move the card up to a certain point.
let scaleStrength = 1 - ((1 - CardView.scaleMin) * fabs(rotationStrength))
let scale = max(scaleStrength, CardView.scaleMin)
// Transformation to rotate by certain amount.
let rotationTransform = CGAffineTransformMakeRotation(rotationAngle)
// Transformation to scale by a certain amount.
let scaleAndRotationTransform = CGAffineTransformScale(rotationTransform, scale, scale)
// Apply transformations.
self.transform = scaleAndRotationTransform
Я пробовал ряд возможных решений:
- Предопределенные ограничения в.xib-файле, где подпредставление №2 имеет ту же ширину, высоту, вершину и ведущее, что и его суперпредставление № 1.
- Программно устанавливая ширину, высоту, верхние и ведущие ограничения подпредставления № 2, где translatesAutoresizingMaskIntoConstraints имеет значение false.
- Программно устанавливая autoresizingMask в FlexibleWidth и FlexibleHeight.
Какие-либо предложения? Я вроде застрял здесь!:)