2015-09-25 2 views
1

Как оживить изменение ширины при сохранении ориентации в центре?Анимация Ширина UILabel с фиксированным центром

В настоящее время, когда я это делаю, он не растет из центра.

self.textLabel = UILabel() 
self.textLabel.frame = CGRectMake(0, 0, Globals.voterTextLabel, Globals.voterTextLabel) 
self.textLabel.center = CGPointMake(self.view.frame.width/2, self.view.frame.height/2) 
self.textLabel.text = "VS" 
self.textLabel.layer.cornerRadius = Globals.voterTextLabel/2 
self.textLabel.layer.masksToBounds = true 
self.textLabel.clipsToBounds = true 
self.textLabel.backgroundColor = UIColor.whiteColor() 
self.textLabel.textColor = Colors.voterTextLabel 
self.textLabel.textAlignment = .Center 
self.textLabel.autoresizingMask = .FlexibleWidth 
self.view.addSubview(self.textLabel) 

UIView.animateWithDuration(2, animations: { 
    self.textLabel.frame.size.width = 150 
    self.textLabel.center.x = self.view.frame.width/2 
}, completion: nil) 

ответ

1

Это будет работать на вас. Вам просто нужно указать масштаб для ширины и высоты (по умолчанию 1, который не будет иметь эффекта). И это будет анимировать рамку вашего представления.

UIView.animateWithDuration(2, delay: 0, options: UIViewAnimationOptions.BeginFromCurrentState, animations: {() -> Void in 
     self.textLabel.transform=CGAffineTransformMakeScale(3, 1); 
    }, completion: nil) 

И если вы не хотите, чтобы растянуть содержание, чем вы можете попробовать это:

 UIView.animateWithDuration(2, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {() -> Void in 

     var newWidth:CGFloat = 200.0; 

     var oldWidth:CGFloat = self.textLabel.frame.width; 

     var totalChangeWidth:CGFloat = newWidth - oldWidth; 

     var newHeight:CGFloat = 200.0; 

     var oldHeight:CGFloat = self.textLabel.frame.width; 

     var totalChangeHeight:CGFloat = newHeight - oldHeight; 

     self.textLabel.bounds.size = CGSizeMake(self.textLabel.frame.size.width + totalChangeWidth, self.textLabel.frame.size.height + totalChangeHeight); 

     self.textLabel.center = CGPointMake(self.view.frame.width/2, self.view.frame.height/2) 

    }, completion:nil) 
+0

вопрос имеет «быстрый» тег. Если OP явно не упоминает, что они также принимают ответы Objective-C (и это не так), лучше отправить ответ в Swift. Спасибо. :) – Moritz

+0

@ EricD. Извините за код цели-c. Обновлен мой ответ с помощью фрагмента кода Swift. –

+0

Нет проблем. Спасибо за обновление. – Moritz

Смежные вопросы