목록전체 글 (284)
기어가더라도 제대로

이렇게 큰 사진을 넣을 때, 각자 사진의 비율이 다를 것이고, 화면의 일부분에 국한되게 보이게 하고 싶다. .frame() 을 써보자. .cliped() 를 사용해 보자 되기는 했으나, 원한 사진은 아니였다. 300 X 300 에 알맞게 사진이 들어가길 원하는데 어떻게 하면 좋을까? original 사이즈는 유지한채로 프레임만 잘렸다. .resizable() 을 이용하자 괜찮아 지기는 했는데 조금 모자란 느낌이다. 원본의 비율이 좀 찌그러졌다고 해야하나. 위아래로 긴 사진인데, 정사각형에 담으려다 보니까 찌부가 되었다. scaledToFit() Vs. scaledToFill() scaledToFit() 최대한 원본의 비율을 유지한다. 만약에 세로로 길죽한 직사각형을 정사각형의 공간에 담는다면, 비율 유지..

AppStorage 같은 경우엔 간단한 String, Int, Bool 등을 저장가능 복잡한 데이터 타입을 담기위해선 UserDefault 자체를 씀 struct User: Codable { let firstName: String let lastName: String } Codable 이라는 프로토콜을 채택하는데, 이것은 이런 의미를 가지고 잇다. 이런 인스턴스를 archiving 하기 -> Encode() unarchiving 해서 인스턴스화 하기 -> Decode() 즉, Codable == Encodable + Decodable 어쨌든 저장하기 위해서는 plane 한 Text 로 저장이 가능한데 인스턴스의 경우 plane 한 텍스트로 만드는 것을 Encode, Text 에서 인스턴스화 하는 것을 D..

UserDefault 를 사용할 때 SwiftUI 에서 조금 간편하게 할 수 있는 property wrapper struct ContentView: View { @State private var tapCount = UserDefaults.standard.integer(forKey: "Tap") var body: some View { Button("Tap count: \(tapCount)") { tapCount += 1 UserDefaults.standard.set(self.tapCount, forKey: "Tap") } } } UserDefault 에는 3가지 문제가 있습니다. 첫째, 현행 2줄의 코드로 처리가 되는점 저장은 set, 인출은 해당 데이터 타입을 불러옴 둘째, 처음에 앱을 실행할 때는 저 ..