UILabel движется влево или вправо Swift - PullRequest
0 голосов
/ 18 мая 2018

Я установил 2 текста по автопоставкам и ограничениям.Теперь я хотел бы переместить текст 1 вправо и текст 2 влево, но это не сработало.Оба текста должны заканчиваться в центре представления (по горизонтали)

@IBOutlet weak var Text1: UILabel!
@IBOutlet weak var Text2: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    UIView.animate(withDuration: 5, delay: 0, options: [.beginFromCurrentState],
                   animations: {
                    self.Text1.frame.origin.x += 300
                    self.Text2.frame.origin.x -= 300
                    self.view.layoutIfNeeded()
    }, completion: nil)
    // Do any additional setup after loading the view.
}

Я сделал что-то не так в коде?

Ответы [ 4 ]

0 голосов
/ 22 февраля 2019
UIView.transition(with:self.yourLabel,
  duration: 5.0,
  options: [.autoreverse,.repeat],
  animations: {
    self.yourLabel.transform = CGAffineTransform(translationX: (-1 * (self.view.frame.size.width / 2) + 20), y:0)
    self.yourLabel.transform = CGAffineTransform(translationX: ((self.view.frame.size.width / 2) - 20), y:0)
  }, 
  completion: nil)
0 голосов
/ 18 мая 2018

Вы можете использовать CGAffineTransform(translationX: y:) для достижения чего-то подобного:

UIView.animate(withDuration: 1.0, delay: 0.0, options: .curveEaseInOut, animations: {
     self.breathingStatusLabel.transform = CGAffineTransform(translationX: self.breathingStatusLabel.bounds.origin.x + 300, y: self.breathingStatusLabel.bounds.origin.y)
}, completion: nil)

Чтобы переместить его обратно в исходное место, добавьте это в другой блок анимации:

self.breathingStatusLabel.transform = .identity

Примечание: CGAffineTransform(translationX: y:) переводит представление в указанное место, но не меняет его рамки.Поэтому будьте осторожны при использовании этого, чтобы просто анимировать ярлыки, которые вы можете использовать.

Но, например, вы хотите переместить UITextFields, когда появится клавиатура, вы должны изменить ограничения, если она autolayout, или изменить ее рамку.Если вы используете CGAffineTransform(translationX: y:), вы заметите, что он будет перемещать UITextField, но когда вы нажмете на него, ничего не будет работать, потому что его кадр не изменился, изменилось только местоположение.

0 голосов
/ 18 мая 2018
@IBOutlet weak var Text1: UILabel!
@IBOutlet var Text1LeftConstrin:NSLayoutConstraint!
// (Connect this with your Text1 label left constrain)

@IBOutlet weak var Text2: UILabel!
@IBOutlet var Text1LeftConstrin:NSLayoutConstraint! 
//(Connect this with your Text1 label left constrain)

override func viewDidLoad() {
super.viewDidLoad()
UIView.animate(withDuration: 5, delay: 0, options: [.beginFromCurrentState],
               animations: {
                Text1.constant += 300
                Text2.constant -= 300
                self.view.layoutIfNeeded()
}, completion: nil)
// Do any additional setup after loading the view.
}
0 голосов
/ 18 мая 2018

Вам нужно поиграть с ограничениями меток.

UIView.animate(withDuration: 5, delay: 0, options: [.beginFromCurrentState],
               animations: {


     //here modify constraints constant or may need to add some new constraints dynamically.

           //     self.Text1.frame.origin.x += 300
           //     self.Text2.frame.origin.x -= 300
           //     self.view.layoutIfNeeded()
}, completion: nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...