2015-08-18 4 views
1

Я пытался заставить этот фрагмент кода работать, но я не могу заставить мой UIButton анимировать изображения.Рабочие анимации UIButton в Swift

@IBOutlet weak var screenButton: UIButton!; 

func animation(){ 
     var animationButton : UIButton!; 
     var imageList = [UIImage](); 
     var image1:UIImage = UIImage(named:"3fingers-o-l-animation1.png")!; 
     var image2:UIImage = UIImage(named:"4fingers-o-l-animation1.png")!; 

     animationButtonscreenButton = screenButton; 
     imageList = [image1, image2]; 

     animationButton!.imageView!.animationImages = imageList; 
     animationButton!.imageView!.animationDuration = 1.0; 
     animationButton!.imageView!.startAnimating(); 
    } 

После написания этого кода я перетащил линию от screenButton к кнопке Я хочу, чтобы оживить через изображение в раскадровке. Что я делаю неправильно?

+2

UIButton не инициализирован ... – Shoaib

+1

И поэтому вы должны использовать '?' И '!', Когда это необходимо. Не '' 'весь код, потому что он будет скрывать ошибки. Если что-то должно быть там, используйте развертку силы '!'. Или в этом случае просто необязательная переменная. Вы бы видели проблему очень рано. –

+1

i) инициализировать UIButton ii) установить его фрейм iii) addSubview на ваш взгляд – Shoaib

ответ

1

Что вам нужно сделать, это не повторно инициализировать UIButton в функции animation; так, закомментируйте эту строку:

//var animationButton : UIButton! 

Кроме того, только имея IBOutlet, мы должны также IBAction вашей функции animation. Сделайте то же, что и для своей кнопки, управляя перетаскиванием «строки» в блок функции (отметьте IBAction, а не IBOutlet).

Немного проходных, пока вы еще в раскадровке:


  • Что у вас есть только одна кнопка под названием: animationButton, который является IBOutlet от раскадровку к вашему кода путем перетаскивания строки «строка».

  • Для вашего animation функции: Control перетаскивание также из раскадровки из «линии» для блока функции animation.

  • Настройте начальное изображение для вашей кнопки в раскадровке, как будет указано ниже.

Кроме того, мы должны создать исходное изображение в режиме раскадровки; В противном случае свойство изображения кнопки равно nil.

Пожалуйста, сделайте это в раскадровке, щелкнув правой кнопкой мыши «Инспектор атрибутов», а затем установите изображение, где указано «изображение». В качестве теста я установил его как «1.jpg».

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

@IBOutlet weak var animationButton: UIButton! 
@IBAction func animation() 
{ 
    print("button touched") 
    //var animationButton : UIButton! 
    var imageList = [UIImage]() 
    var image1:UIImage = UIImage(named:"1.jpg")! 
    var image2:UIImage = UIImage(named:"2.jpg")! 

    //animationButtonscreenButton = screenButton; 
    imageList = [image1, image2]; 

    animationButton!.imageView!.animationImages = imageList 
    animationButton!.imageView!.animationDuration = 1.0 
    animationButton!.imageView!.startAnimating() 
} 

Просто побежал быстрый тест; он получает событие касания и изображения оживляют на кнопке. Надеюсь это поможет.

+1

Спасибо. Прочитав ответ, я узнал, что не так с моим кодом. Свойство изображения моих кнопок было нулевое. Размещение изображения в этом поле исправило мою проблему, и мой экран теперь оживляет, как сумасшедший! –

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