[iOS] 임의의 좌표에 UIImage 생성

18795 단어 XcodeiOSSwiftSwift5
평소 Storyboard를 사용하여 UI를 구축하고 있는 저입니다만, 랜덤한 좌표에 UIImage를 생성하려고 생각해 조사하면 여러가지 공부가 되었으므로 정리합니다.

버전



Swift 5.3
Xcode 12.1

이 기사에서 언급


  • storyboard를 사용하지 않고 UI를 화면에 그리는 방법

  • 화면 중간에 이미지 배치



    우선, 코드로부터 정해진 위치에 화상을 배치합니다.
    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // UIImageの初期化
            let image: UIImage = UIImage(named: "ninja")!
    
            // UIImageViewの初期化
            let imageView = UIImageView(image: image)
    
            // 画面の縦幅・横幅を取得
            let viewWidth: CGFloat = view.frame.size.width
            let viewHeight: CGFloat = view.frame.size.height
    
            // 画像に設定したい縦・横幅を変数に格納
            let imageWidth: CGFloat = 100
            let imageHeight: CGFloat = 100
    
            // 画像の座標・大きさを生成
            let rect: CGRect = CGRect(x: 0, y: 0, width: imageWidth, height: imageHeight)
    
            // 指定した座標・大きさを設定
            imageView.frame = rect;
    
            // 画像を画面の中央を指定
            imageView.center = CGPoint(x: viewWidth / 2, y: viewHeight / 2)
    
            // viewにUIImageViewを追加
            self.view.addSubview(imageView) 
    
        }
    
    }
    



    코드만으로 이미지가 중간에 배치되었습니다. 귀엽다.

    무작위 좌표로 이미지 생성



    CGPoint의 좌표는 CGFloat를 인수에 취하므로,
    CGPoint(x: CGFloat.random(in: 0...viewWidth), y: CGFloat.random(in: 0...viewHeight))
    

    로 임의의 좌표를 생성할 수 있다.

    그래서 위 화면의 중간에 이미지를 생성하는 코드
    imageView.center = CGPoint(x: viewWidth / 2, y: viewHeight / 2)
    

    부분을
    imageView.center = CGPoint(x: CGFloat.random(in: 0...viewWidth), y: CGFloat.random(in: 0...viewHeight))
    

    이렇게하면 무작위 좌표로 이미지가 생성됩니다.

    첫째, 이제는 ViewDidLoad에 이미지 생성 코드를 작성하고 있기 때문에 함수로 요약합니다.
    override func viewDidLoad() {
            super.viewDidLoad()
    
        }
    
        @IBAction func generateUIIMageVIew() -> Void {
            // UIImageの初期化
            let image: UIImage = UIImage(named: "ninja")!
    
            // UIImageViewの初期化
            let imageView = UIImageView(image: image)
    
            // 画面の縦幅・横幅を取得
            let viewWidth: CGFloat = view.frame.size.width
            let viewHeight: CGFloat = view.frame.size.height
    
            // 画像に設定したい縦・横幅を変数に格納
            let imageWidth: CGFloat = 100
            let imageHeight: CGFloat = 100
    
            // 画像の座標・大きさを生成
            let rect: CGRect = CGRect(x: 0, y: 0, width: imageWidth, height: imageHeight)
    
            // 指定した座標・大きさを設定
            imageView.frame = rect;
    
            // 画像を画面の中央を指定
            imageView.center = CGPoint(x: CGFloat.random(in: 0...viewWidth), y: CGFloat.random(in: 0...viewHeight))
    
            // viewにUIImageViewを追加
            self.view.addSubview(imageView)
        }
    

    버튼 추가


    그리고 버튼과 연결합니다.



    그러면 이런 식으로 버튼을 누를 때마다 이미지가 무작위 위치에서 생성되었습니다. 대단해



    일정한 시간에 이미지가 생성되도록



    Timer를 사용하여 초당 이미지를 생성합니다.
  • 버튼을 삭제하고 @IBAction 의 부분을 @objc 로 한다.
  • 타이머 초기화

  • 로 구현할 수 있습니다.
    
        var generateImageTimer = Timer()
        override func viewDidLoad() {
            super.viewDidLoad()
            generateImageTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(generateUIIMageView), userInfo: nil, repeats: true)
        }
    
        @objc func generateUIIMageView() -> Void {
            // UIImageの初期化
            let image: UIImage = UIImage(named: "ninja")!
    
            // UIImageViewの初期化
            let imageView = UIImageView(image: image)
    
            // 画面の縦幅・横幅を取得
            let viewWidth: CGFloat = view.frame.size.width
            let viewHeight: CGFloat = view.frame.size.height
    
            // 画像に設定したい縦・横幅を変数に格納
            let imageWidth: CGFloat = 100
            let imageHeight: CGFloat = 100
    
            // 画像の座標・大きさを生成
            let rect: CGRect = CGRect(x: 0, y: 0, width: imageWidth, height: imageHeight)
    
            // 指定した座標・大きさを設定
            imageView.frame = rect;
    
            // 画像を画面の中央を指定
            imageView.center = CGPoint(x: CGFloat.random(in: 0...viewWidth), y: CGFloat.random(in: 0...viewHeight))
    
            // viewにUIImageViewを追加
            self.view.addSubview(imageView)
        }
    

    자동으로 마음대로 이미지가 생성됩니다. 멋지다!



    참고문헌


  • [iPhone] 이미지 UIImageView를 Swift 코드로 설정
  • 【swift5】스톱워치 타이머 만드는 법
  • 【Swift】난수를 생성하는 방법
  • Timer를 사용해 보았습니다.
  • 좋은 웹페이지 즐겨찾기