Авторазмер подпредставлений после 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

Я пробовал ряд возможных решений:

  1. Предопределенные ограничения в.xib-файле, где подпредставление №2 имеет ту же ширину, высоту, вершину и ведущее, что и его суперпредставление № 1.
  2. Программно устанавливая ширину, высоту, верхние и ведущие ограничения подпредставления № 2, где translatesAutoresizingMaskIntoConstraints имеет значение false.
  3. Программно устанавливая autoresizingMask в FlexibleWidth и FlexibleHeight.

Какие-либо предложения? Я вроде застрял здесь!:)

0 ответов

Другие вопросы по тегам