2016-03-26 20 views
6

Tôi mới sử dụng iOS và đang sử dụng Swift làm ngôn ngữ được lựa chọn của mình. Tôi đang phát triển một chương trình nhỏ đơn giản cho con trai của tôi hiển thị hình ảnh động vật trên UIButtons và khi anh ấy chọn đúng hình ảnh tất cả các nút tải hình ảnh mới và anh ấy được yêu cầu tìm một con vật khác.Chuyển đổi hình ảnh UIButton từ một hình ảnh sang một hình ảnh khác

Thông tin cơ bản về chương trình được thiết lập và đang chạy và anh ấy có thể chơi nó nhưng bây giờ tôi muốn tiếp tục làm cho nó trở nên huyền ảo hơn. Khi hình ảnh chính xác đã được chọn và đó là thời gian để thay thế những hình ảnh nút với những người mới tôi sử dụng:

btnItem.setImage(UIImage(named: arrItems[intItemCounter]), forState: .Normal) 

Thay vì chỉ đơn giản là thay đổi hình ảnh của một nút từ một đến khác tôi muốn làm sự thay đổi với một quá trình chuyển đổi hoạt hình nhưng tôi không thể hiểu được làm thế nào.

Tôi đã tìm thấy nhiều thứ để làm với chuyển tiếp trên UIViews và nhiều việc phải làm với hình ảnh nút hoạt ảnh vĩnh viễn nhưng không có gì cho quá trình chuyển đổi như hòa tan hoặc vuốt từ trái sang phải hoặc bất kỳ thứ gì.

This question trên SO khá giống với của tôi nhưng câu trả lời sử dụng Objective-C.

Vì vậy, câu chuyện dài, có cách nào để chuyển đổi hình ảnh UIButton từ hình này sang hình khác trong Swift không?

Cảm ơn bạn đã dành thời gian trước.

Trả lời

16

Đang cập nhật dưới đây với Swift 4,0

UIView.transition(with: sender as! UIView, duration: 1.5, options: .transitionFlipFromRight, animations: { 
      sender.setImage(UIImage(named: arrItems[intItemCounter]), for: .normal) 
     }, completion: nil) 

UIButton là một lớp con của UIView để bạn có thể sử dụng UIView.animateWithDuration với một nút. Ví dụ: bạn có thể nói điều gì đó như:

@IBAction func buttonPressed(sender: UIButton) { 
     UIView.transitionWithView(sender, duration: 1.5, options: .TransitionFlipFromRight, animations: { 
       sender.setImage(UIImage(named: arrItems[intItemCounter]), forState: .Normal) 
      }, completion: nil) 

    } 

Điều gì sẽ gây ra, khi nhấn, nút để lật ảnh mới.

Nếu bạn muốn các hình ảnh động từ ví dụ khác (fade out/in) bạn có thể nói:

@IBAction func buttonPressed(sender: UIButton) { 
      UIView.animateWithDuration(0.5, animations: { 
        sender.alpha = 0.0 
       }, completion:{(finished) in 
        sender.setImage(UIImage(named: arrItems[intItemCounter]), forState: .Normal) 
        UIView.animateWithDuration(0.5,animations:{ 
        sender.alpha = 1.0 
        },completion:nil) 
      }) 

     } 

Bạn cũng có thể làm một cây thánh giá tan như vậy:

@IBAction func buttonPressed(sender: UIButton) { 
     UIView.transitionWithView(sender, duration: 1.5, options: .TransitionCrossDissolve, animations: { 
      sender.setImage(UIImage(named: arrItems[intItemCounter]), forState: .Normal) 
      }, completion: nil) 

    } 
+1

Cảm ơn đã nhanh chóng phản ứng. Thử nghiệm và làm việc một điều trị. Nhiều đánh giá cao! – bondington

Các vấn đề liên quan