изменение режима ввода слева направо границы снизу

#swift

#swift

Вопрос:

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

введите описание изображения здесь

 override func didAddSubview(_ subview: UIView) {
    let shape = CALayer()
    shape.frame = CGRect(x: 0, y: self.height, width: self.width, height: 1)
    shape.frame.origin.x = 0
    shape.backgroundColor = UIColor.red.cgColor
    self.layer.addSublayer(shape)
    
    let boundsAnim:CABasicAnimation = CABasicAnimation(keyPath: "bounds.size.width")
         boundsAnim.fromValue = 0
        boundsAnim.toValue = self.width
        boundsAnim.duration = 2

         shape.add(boundsAnim, forKey: "bounds.size.width")
       
}
  

Ответ №1:

Установите точку привязки с левой стороны

 shape.anchorPoint = CGPoint(x: 0, y: 0.5)
  

Комментарии:

1. я сделал это, но теперь он начинается с начала, но не может видеть всю ширину, пожалуйста, проверьте скриншот, который я обновил в сообщении

2. Хм … попробуйте также установить позицию: shape.position = CGPoint(x: 0, y: 0)

3. да, я уже понял это, спасибо … так что это в основном переопределяет CGRect, который я создал ранее? я

4. В значительной степени — кадр вычисляется из position , anchorPoint , и bounds . Когда вы изменили точку привязки, позиция изменилась, поэтому вам нужно изменить ее обратно.