2014-12-26 1 views
1

Я новичок в SWIFT, и я тренируюсь, но я немного затрудняюсь. У меня есть изображение в UIImageview, определенное на Main.storyboard, которое мне нужно повернуть.SWIFT, вращающий изображение в UIImageview, определенном в Main.storyboard

У меня есть IBOutlet определяется как:

@IBOutlet weak var imageToRotate: UIImageView! 

Я пытался повернуть его с центром вращения на крайней правой стороне и средней высоты и в соответствии с документацией яблочного и некоторые должности в здесь я anchorPoint:

imageToRotate.layer.anchorPoint = CGPointMake(1.0, 0.5) 

Тогда я пытаюсь повернуть его с помощью преобразования:

imageToRotate.transform = CGAffineTransformMakeRotation(CGFloat(myRadians)) 

Изображение определено в Main.storyboard, и оно выглядит хорошо, когда оно загружается, но когда я выдаю anchorPoint, изображение перемещается влево, а правый край идет туда, где раньше находился центр изображения, и происходит поворот вокруг это пункт.

Я попытался с помощью:

imageToRotate.center = CGPointMake(487, 160) 

, чтобы переместить изображение обратно к месту, где он должен быть, но он не двигается, так что имеет меня путают.

Я думаю, что мне что-то не хватает, но я не могу понять, что это такое. Должен ли я определять подуровень или что-то еще? также тот факт, что только выдавший anchorpoint перемещает изображение говорит мне, что есть что-то я пропускаю.

В определении класса я использовал это и получил это связано с UIImage раскадровке в:

@IBOutlet weak var imageToRotate: UIImageView! 

внутри отключением viewDidLoad() Я использовал это:

imageToRotate.layer.anchorPoint = CGPointMake(1.0, 0.5) 

imageToRotate.transform = CGAffineTransformMakeRotation(CGFloat(myRadians)) 

Спасибо.

ответ

4

Все, что вам действительно нужно сделать, чтобы оценить вокруг точки, сочетает перевод и поворот. Перевод представляет собой координату x и y с началом координат в центре изображения. Вращение - CGFloat в радианах. Это может выглядеть примерно так:

let square2 = UIView(frame: CGRectMake(200, 200, 50, 50)) 
view.addSubview(square2) 
// Desired point from the center to rotate around 
let x = CGFloat(25) 
let y = CGFloat(0) 
var transform = CGAffineTransformMakeTranslation(x, y) 
transform = CGAffineTransformRotate(transform, CGFloat(M_PI_4)) 
transform = CGAffineTransformTranslate(transform,-x,-y) 
square2.backgroundColor = UIColor.magentaColor() 
square2.transform = transform 

Это создает следующий поворот вокруг новой оси вращения: enter image description here

+0

Спасибо за помощь мне с этим. Я использовал ваш код, и получаю те же результаты, что и я, используя другой код. Подвижность вращается одинаково, но также смещается вправо. Я уверен, что проблема как-то связана с определением вида. Я напечатал оценки, используя это: self.waitLabel.text = NSString (формат: "% .1f,% .1f,% .1f,% .1f", self.imageToRotate.bounds.origin.x, self.imageToRotate .bounds.origin.y, self.imageToRotate.bounds.maxX, self.imageToRotate.bounds.maxY) и я получил все нули: 0.0, 0.0, 0.0, 0.0 – DigitalDeath