Как добавить больше блоков

-1

Я попытался добавить var square и все, что я сделал для squareView. Но все, что я получаю, - это одна коробка, а другая просто стоит там. Есть ли более простой способ добавить еще один блок, который выполняет те же действия, что и squareView?

import UIKit

class interestViewController: UIViewController {
    var squareView: UIView!
    var square: UIView!
    var gravity: UIGravityBehavior!
    var animator: UIDynamicAnimator!
    var collision: UICollisionBehavior!
    override func viewDidLoad() {
        super.viewDidLoad()
        squareView = UIView(frame: CGRectMake(100, 100, 100, 100))
        square = UIView(frame: CGRectMake(200, 100, 100, 100))

        squareView.backgroundColor = UIColor.blackColor()
        square.backgroundColor = UIColor.blackColor()
        view.addSubview(square)
        view.addSubview(squareView)
        animator = UIDynamicAnimator(referenceView: view)
        animator = UIDynamicAnimator(referenceView: view)
        gravity = UIGravityBehavior(items: [squareView])
        gravity = UIGravityBehavior(items: [square])
        animator.addBehavior(gravity)
        animator.addBehavior(gravity)
        collision = UICollisionBehavior(items: [squareView])
        collision = UICollisionBehavior(items: [square])
        collision.translatesReferenceBoundsIntoBoundary = true
        animator.addBehavior(collision)
        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}
  • 0
    Посмотрите "Стандартный курс по разработке приложений для IOS 8 с помощью Swift", эпизод "12. Динамическая анимация", объясняющий все это в деталях.
Теги:
xcode

1 ответ

0

Этот код - полная чепуха:

gravity = UIGravityBehavior(items: [squareView])
gravity = UIGravityBehavior(items: [square])
animator.addBehavior(gravity)
animator.addBehavior(gravity)

Когда вы устанавливаете переменную gravity в одно поведение и другое поведение прямо в строке, первое поведение просто выкидывается, как если бы оно никогда не существовало. Поэтому, естественно, когда вы приближаетесь к добавлению поведения, добавляется только одно поведение: одна gravity которая оставлена (которую вы тогда, еще более бессмысленно, добавляете дважды). Таким образом, естественно, что только один блок анимирован.

Подумайте об этом проще:

var x = 0
x = 1
x = 2

Теперь, каково значение переменной x? Если вы считаете, что это 0 и 1 и 2, вы не поняли, что такое переменная.

  • 0
    да, я понял, что сразу после публикации вы знаете, как анимировать оба блока? @ Matt
  • 0
    Да, и вы тоже, если вы думаете о моем ответе и о том, как изменить свой код в соответствии с ним. Я думаю, что я ответил на вопрос, который вы на самом деле задали.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню