source

Swift를 사용하여 이미지 크기를 조정하는 방법UI?

manycodes 2023. 4. 16. 15:24
반응형

Swift를 사용하여 이미지 크기를 조정하는 방법UI?

Assets.xcassets에 큰 이미지가 있습니다.Swift를 사용하여 이 이미지의 크기를 조정하는 방법UI를 작게 만들까요?

프레임을 설정하려고 했지만 작동하지 않습니다.

Image(room.thumbnailImage)
    .frame(width: 32.0, height: 32.0)

하면 됩니다..resizable() 하기 전Image.

Image(room.thumbnailImage)
    .resizable()
    .frame(width: 32.0, height: 32.0)

이거 어때:

struct ResizedImage: View {
    var body: some View {
        Image("myImage")
            .resizable()
            .scaledToFit()
            .frame(width: 200, height: 200)
    }
}

이미지 뷰는 200x200이지만 이미지는 원래 애스펙트비(그 프레임 내에서 재스케일링)를 사용합니다.

스위프트, UI를 합니다..resizable()★★★★★★★★★★★★★★★★★★★★★★★★★★★「」를 사용해 ..aspectRatio()할 수 있습니다.ContentMode필요에 따라 이미지를 "적합"하거나 "채우기"할 수 있습니다.

예를 들어, 다음과 같이 맞춤으로써 이미지의 크기를 조정하는 코드가 있습니다.

Image("example-image")
.resizable()
.aspectRatio(contentMode: .fit)

@raphael의 답변과 코멘트에 대해 자세히 설명하겠습니다.

Xcode 11 beta 2 에서는, 화상을 다른 요소로 감아 원래의 석면비를 유지하면서, 임의의 치수로 화상을 스케일링 할 수 있습니다.

예.

struct FittedImage: View
{
    let imageName: String
    let width: CGFloat
    let height: CGFloat

    var body: some View {
        VStack {
            Image(systemName: imageName)
                .resizable()
                .aspectRatio(1, contentMode: .fit)
        }
        .frame(width: width, height: height)
    }
}


struct FittedImagesView: View
{
    private let _name = "checkmark"

    var body: some View {

        VStack {

            FittedImage(imageName: _name, width: 50, height: 50)
            .background(Color.yellow)

            FittedImage(imageName: _name, width: 100, height: 50)
            .background(Color.yellow)

            FittedImage(imageName: _name, width: 50, height: 100)
            .background(Color.yellow)

            FittedImage(imageName: _name, width: 100, height: 100)
            .background(Color.yellow)

        }
    }
}

결과.

가로 세로 비율을 유지하는 적합한 이미지

(어떤 이유에서인지 이미지가 약간 흐릿하게 보입니다.실제 출력은 날카롭기 때문에 안심하십시오.)

맞춤 가로 세로 비율 및 경계에 대한 클리핑으로 이미지를 렌더링하려면 다음 코드를 사용합니다.

struct ContentView: View {
    var body: some View {
        Image("donuts")
            .resizable()
            .scaledToFill()
            .frame(width: 200, height: 200)
            .border(Color.pink)
            .clipped()
    }
}

그 결과:

여기에 이미지 설명 입력

때 '어울리지 않다'를 해요..resizable 할 수 수식어

코드는 다음과 같습니다.

Image(room.thumbnailImage)
    .resizable()
    .frame(width: 32.0, height: 32.0)
struct AvatarImage: View {
    var body: some View {

            Image("myImage")
                .resizable()
                .scaledToFill() // <=== Saves aspect ratio
                .frame(width: 60.0, height:60)
                .clipShape(Circle())

    }
}

하나의 은 '우리'를 입니다.scaleEffect★★★★★★★★★★★★★★★★★★:

Image(room.thumbnailImage)
    .resizable()
    .scaleEffect(0.5)
Image(room.thumbnailImage)
    .resizable()
    .frame(width: 32.0, height: 32.0,alignment: .center)

인스위프트UI .resable() 속성은 이미지 크기를 조정하는 데 도움이 됩니다.그 후 커스텀 사이즈를 지정할 수 있습니다.

크기 조정 시 가로 세로 비율을 사용하려면 다음 코드를 사용할 수 있습니다.

Image(landmark.imageName).resizable()
                .frame(width: 56.0, height: 56.0)
                .aspectRatio(CGSize(width:50, height: 50), contentMode: .fit)

스위프트에선 꽤 쉬워 보이는데UI / 그들이 제공한 데모를 따라 https://developer.apple.com/videos/play/wwdc2019/204

struct RoomDetail: View {
     let room: Room
     var body: some View {

     Image(room.imageName)
       .resizable()
       .aspectRatio(contentMode: .fit)
 }

도움이 됐으면 좋겠다.

이미지 사이즈를 하드코드/수정하면 안 되기 때문입니다.여기에서는, 다양한 디바이스의 화면 해상도에 따라서 범위를 조정하는 보다 좋은 방법이 있습니다.

Image("ImageName Here")
       .resizable()
       .frame(minWidth: 60.0, idealWidth: 75.0, maxWidth: 95.0, minHeight: 80.0, idealHeight: 95.0, maxHeight: 110.0, alignment: .center)
       .scaledToFit()
       .clipShape(Capsule())
       .shadow(color: Color.black.opacity(5.0), radius: 5, x: 5, y: 5)

기본적으로 이미지 보기는 컨텐츠에 맞게 자동으로 크기를 조정하므로 화면을 넘어설 수 있습니다.resizeable() 수식자를 추가하면 대신 사용 가능한 모든 공간을 채울 수 있도록 이미지의 크기가 자동으로 조정됩니다.

Image("example-image")
    .resizable()

그러나, 이 때문에, 화상을 원래의 가로 세로 비율이 일그러지는 일이 있습니다.왜냐하면, 화상을 공간을 메우는 데 필요한 만큼, 모든 차원으로 늘어뜨리기 때문입니다.

애스펙트 비율을 유지하려면 .fill 또는 .fit을 사용하여 다음과 같이 aspectRatio 수식자를 추가해야 합니다.

Image("example-image")
    .resizable()
    .aspectRatio(contentMode: .fit)

:은 ★★★★★★★★★★★★★★★★★★★★★★.img_Logo이미지 이름 정의 이미지 속성을 다음과 같이 변경할 수 있습니다.

 VStack(alignment: .leading, spacing: 1) {
                        //Image Logo Start
                        Image("img_Logo")
                            .resizable()
                            .padding(.all, 10.0)
                            .frame(width: UIScreen.main.bounds.width * 0.4, height: UIScreen.main.bounds.height * 0.2)
                        //Image Logo Done
                    }
Image(systemName: "person.fill")
  .font(.system(size: 13))

를 사용하고 있는 경우에도 동작합니다.systemName.

SwiftUI는 Swift를 사용할 수 있는 .resable() 수식자를 제공했습니다.공간에 맞게 이미지 크기를 조정하는 UI

struct ContentView: View {
    var body: some View {
        Image("home")
            .antialiased(true) //for smooth edges for scale to fill
            .resizable() // for resizing
            .scaledToFill() // for filling image on ImageView
    }
}

이미지 크기를 빠르게 조정하려는 경우UI는 다음 코드만 사용합니다.

import SwiftUI

    struct ImageViewer : View{
        var body : some View {
            Image("Ssss")
            .resizable()
            .frame(width:50,height:50)
        }
    }

하지만 여기에 문제가 있다.버튼 안에 이 이미지를 추가하면 이미지가 표시되지 않고 파란색 블록만 표시됩니다.이 문제를 해결하려면 , 다음의 순서에 따릅니다.

import SwiftUI

struct ImageViewer : View{
    var body : some View {
        Button(action:{}){
        Image("Ssss")
        .renderingMode(.original)
        .resizable()
        .frame(width:50,height:50)
    }
   }
}

코드의 논리적 구조를 이해하는 것은 매우 중요합니다.Swift처럼UI 이미지 크기는 기본적으로 조정할 수 없습니다.따라서 이미지 크기를 조정하려면 이미지 뷰를 선언한 직후에 .resable() 수식자를 적용하여 크기를 조정해야 합니다.

Image("An Image file name")
    .resizable()

.resizable()이치노은 꼭 해 주세요..resizable()변경 전에 선언해야 합니다.

다음과 같습니다.

Image("An Image file name")
    .resizable()
//add other modifications here 

현재 뷰에 맞게 이미지 축척을 작성하려면 resable() 수식자를 사용합니다.수식자는 사용 가능한 공간에 맞게 이미지의 크기를 조정합니다.

예:

 Image("ImageName")
            .resizable()
            .aspectRatio(contentMode: .fit)
            .frame(width: 200, height: 200, alignment: .center)

여기는 산의 풍경이고 이게 제 이미지입니다.

여기에 이미지 설명 입력

코드 내부에 간단한 이미지 뷰를 만듭니다.

var body: some View {
    Image(“mountains”)
}

여기에 이미지 설명 입력

결과가 좋지 않아 보인다.

크기를 조정하고 처음에 맞는 척도를 사용합니다.

var body: some View {
    Image(“mountains”)
        .resizable()
        .scaledToFit()
}

여기에 이미지 설명 입력

이제 훨씬 나아졌어요.

이미지는 수직으로 촬영되고 화면은 수평이므로 공백이 있습니다.

크기를 사용하여 채우지 마십시오.

여기에 이미지 설명 입력

이미지의 일부가 화면 밖에 있지만 배율이 없는 기본값보다 더 보기 좋습니다.

프리뷰내의 이미지를 클릭하면, 이미지의 사이즈가 표시됩니다.저 파란 선이 이미지의 테두리입니다.

여기에 이미지 설명 입력

Swift에서 이미지 크기를 조정하려면 를 사용해야 합니다.UI:

호출 -> > > > >Image("somename")어느 정도 ->어느 정도 ->어느 정도 ->어느 정도 ->어느 정도 ->.resizable()

이미지 크기를 조정할 수 있게 되었습니다.

다음으로 .aspectRatio를 치수에 맞게 적용하거나 프레임을 채울 수 있습니다.

크기 조정 가능의 간단한 사용 예:

Image("somename")
.resizable()
.frame(width: 50px, height: 50px) 

204

사용하여 이미지합니다.를 작게 UI를 .resizable()에 런음음음 and를 사용하다frame().

Image(room.thumbnailImage)
.resizable()
    .frame(width: 32.0, height: 32.0)

다음과 같이 이미지 속성을 정의할 수 있습니다.

   Image("\(Image Name)")
   .resizable() // Let you resize the images
   .frame(width: 20, height: 20) // define frame size as required
   .background(RoundedRectangle(cornerRadius: 12) // Set round corners
   .foregroundColor(Color("darkGreen"))      // define foreground colour 

resable() 속성을 사용할 수 있지만 공통 수식자에서는 크기 조정 가능을 사용할 수 없으므로 이미지 확장을 사용해야 합니다.

extension Image {
    func customModifier() -> some View {
        self
            .resizable()
            .aspectRatio(contentMode: .fit)
    }

여러 화면 크기를 일치시키려면 다음 코드를 사용하는 것이 좋습니다.

Image("dog")
    .resizable()
    .frame(minWidth: 200, idealWidth: 400, maxWidth: 600, minHeight: 100, idealHeight: 200, maxHeight: 300, alignment: .center)

다음 항목도 사용할 수 있습니다.

Image("Example")
   .scaleEffect(NumberWithSizeBetweenZeroAndOne)

이미지 뷰에서 동적 유형 글꼴 수식자를 사용합니다.

Image(systemName: "nose")
        .font(.largeTitle)

resable()을 사용하여 가능합니다.

Image(room.thumbnailImage)
    .renderingMode(.original)
    .resizable()
    .frame(width: 32.0, height: 32.0)

언급URL : https://stackoverflow.com/questions/56505692/how-to-resize-image-with-swiftui

반응형