[swift] UIimageView 이미지 디스플레이 크기 조정

5243 단어 SwiftiOS
매일 뭔가를 내보낼 생각이지만 한번 해보면 어렵죠...
(매일 인코딩을 하기 때문에 쓴 재료는 얼마든지 나온다. 노트만 잘 남겨라.)
오늘은 UII MageView로 이미지를 표시하고 싶지만 왠지 모르게 확대해서 자신이 생각한'등배'로 표시하지 않습니다.
오랫동안 고민한 결과 어쩔 수 없는 이야기로 가득 찼다.
왜'화면 사이즈'가 여러 가지가 있죠!?탁과입니다.

화면 이미지


다음'성공 모드'같은 하늘 사진을 보여주고 싶어요.
성공 모드

실패 모드

실패 모드에서는 아무래도 이미지가 확대된 것 같죠~.

출처


ViewController.swift
    func setBgImage() {
        // 成功パターン
        let width = UIScreen.main.bounds.size.width
        let height = UIScreen.main.bounds.size.height

        // 失敗パターン
        //let width = UIScreen.main.nativeBounds.size.width
        //let height = UIScreen.main.nativeBounds.size.height

        bgImage = UIImage(named: "sky(828_1792)")!
        bgImgView.image = bgImage
        let bgImageWidth = bgImage.size.width
        let bgImageHeight = bgImage.size.height
        let scale = height / bgImageHeight
        // 画像表示サイズの設定("scale"で倍率調整)
        bgImgView.frame = CGRect(x: 0,
                                 y: 0,
                                 width: bgImageWidth * scale,
                                 height: bgImageHeight * scale)
        // 画像表示の中心を画面の中心に
        bgImgView.center = CGPoint(x: (width / 2),
                                   y: (height / 2))

        self.view.addSubview(bgImgView)
        self.view.clipsToBounds = true
    }
첨부 이미지의 크기를 UIScreen.main.nativeBounds.size 와 일치하는 해상도로 조정했지만 실제 화면 크기가 UIScreen.main.bounds.size (전자는 후자의 2-3배) 이기 때문에 자신이'등배'라고 생각하고 이미지를 표시한 결과 예상보다 2-3배 큰 것으로 나타났다.

득점


이 점을 잘 깨닫고 샘플의 논리와 비교해 보면 금방 알아차릴 수 있지만'화면 사이즈'라는 개념에 대한 이해가 얕아 오랫동안 고민했다.
한 마디로 하면'UIVIew를 처리할 때의 화면 사이즈 사용UIScreen.main.bounds.size'의 교훈을 받아들여야 한다.

좋은 웹페이지 즐겨찾기