NSTimer를 사용하여 이미지가 서서히 흐릅니다 ~ 훨씬 커지는 구현

9765 단어 iOSUIKitSwift
게임 등으로 이미지가 와우 ~ 쭉 커져 갈 때 있네요! ?
iOS라고 SpriteKit 같은 게임 개발의 프레임워크라면 UIKit에 비해 비교적 간단하게 구현할 수 있는 이미지였던 나. 그런 가운데, 그럼 UIKit로 어떻게 할 거라고 생각하기 시작했기 때문에 우선 만들어 보았습니다.

실장 내용은, 버튼을 누르면 화상이 구와~와 커져 화면 가득 커지면 처리를 멈추는 실장이 되어 있습니다.

구현 내용



ViewController.swift
import UIKit

class ViewController: UIViewController {

    var image: UIImage = UIImage(named: "background.jpeg")!
    var ImageView: UIImageView = UIImageView(frame: CGRectMake(0, 0, 20, 20))
    var button: UIButton!

    var countNum = 0
    var timer = NSTimer()
    var timeRanning = false

    override func viewDidLoad() {
        super.viewDidLoad()
        ImageView.image = image
        ImageView.layer.position = CGPoint(x: self.view.bounds.width / 2,y: self.view.bounds.height / 2)

        button = UIButton()
        button.frame = CGRectMake(0, 0, 50, 50)
        button.backgroundColor = UIColor.blackColor()
        button.layer.position = CGPoint(x: self.view.bounds.width / 2,y: self.view.bounds.height / 2 - 100)
        button.setTitle("Btn", forState: .Normal)
        button.addTarget(self, action: "onClickButton:", forControlEvents: .TouchUpInside)
        self.view.addSubview(button)


    }
    func onClickButton(sender: UIButton){
        if timeRanning == false{
            timer = NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
            timeRanning = true
        }

    }
    func update(){
        countNum++
        if(countNum < 200){
            ImageView.transform = CGAffineTransformMakeScale(0.5 * CGFloat(countNum), 0.5 * CGFloat(countNum))
            ImageView.removeFromSuperview()
            self.view.addSubview(ImageView)
            println("\(countNum)")
        }else{
            timeRanning = false
        }

    }


}




참고 동영상을 보고 scheduledTimerWithTimeInterval의 제1 인수의 수가 포인트라고 느꼈으므로 간단하게 해설을 합니다. 예를 들어 첫 번째 인수가 1이면 초당 update()를 호출합니다. 즉, scheduledTimerWithTimeInterval의 첫 번째 인수 값이 크면 이미지가 커지는 속도가 느려지고 작으면 이미지가 커지는 속도가 빨라집니다.

세세한 해설은 참고로 한 동영상이 참고가 된다고 생각하므로, 이하의 참고로부터 봐 주세요.

완성



숲속 배틀 씬으로 시프트할 때의 애니메이션을 이미지해 만들어 보았습니다.
이미지가 굉장해 ~ 라고 규정의 크기까지 할 수 있으면 길에서 몬스터가 와우 ~ 응으로 출현하는 것도 재미있을지도 네요




참고
Swift로 뭐라고 StopWatch를 만들어 보았다 (그 1)

좋은 웹페이지 즐겨찾기