본문 바로가기

공부/스위프트62

[Swift] UIkit 이미지를 이미지뷰에 맞추기(clipToBounds) 이번엔 UIkit에서 이미지를 이미지뷰에 맞추는 작업을 해보려고합니다. 우리가 일반적으로 인스타그램같은 각종 sns들에서 이미지를 올릴때 비율은 맞지만 이미지가 잘려서 올라가는 경우가 있습니다.그런것처럼 이미지를 비율은 맞지만 해당 이미지뷰의 영역밖으로는 못빠져나가게 하는 방법을 알려드리려고해요. 우선 기존에 이미지를 이미지 뷰에 넣을때 다음과 같이 코드를 작성할겁니다.private let testImageView: UIImageView = { let view = UIImageView() view.image = UIImage(named: "mock1") view.contentMode = .scaleAspectFill view.translatesAutoresizingMaskIntoCo.. 2024. 6. 24.
[스위프트] UIKit custom segmented control 이번시간에는 UIKit에서 세그멘트 컨트롤을 커스텀해서 쓰느법을 알아보려고 합니다.다른글들을 많이 찾아봤는데 다들 스냅킷만 쓰더라구요?이번 프로젝트는 스냅킷을 쓸만큼 뭐가 많지않아서 그냥 만들기로해서하루죙일 스냅킷 안쓰고 그걸 똑같이 그대로 UIKit 네이티브 코드로 옮겨서 했는데 안되더라구요...그래서 해외글도 찾아보니까 그냥 x좌표를 옮겨버리더라구요?(진즉에 찾아볼껄;;) 그래서 나온 코드입니다.. 와 진짜 너무 힘들었어요ㅠㅠ우선 결과물은 아래와 같습니다.  그럼 코드로 보시죠~예시코드private let segmentControl: UISegmentedControl = { let segment = UISegmentedControl() segment.insertSegment(withTitle: "Mo.. 2024. 6. 23.
[Swift] DateFormat 정리 DateFromat은 굉장히 많은 종류가 있습니다.매번 찾아보기 귀찮아서 정리해놔야겠다 생각을 전부터 하다 이제서야 하네요.. control + f or cmd + f 로 년도나 월 이런식으로 한방에 찾아서 보시면 편할거같아요 Year 년도포맷설명예시y생략없이 전체로 나옴.단, 0 생략 가능하면 생략2 -> 220 -> 20202 -> 2020202 -> 2022020 -> 2020yy두글자만, 0이 생략가능하면 생략2 -> 0210 -> 10124 -> 24024 -> 24202 -> 022024 -> 24yyyy4글자, 생략없음2 -> 000220 -> 20202 -> 02022024 -> 2024 Quarter 분기(1년은 총 4분기 입니다.)포맷설명예시Q숫자만 한글자1.1. -> 1QQ숫자만 두글.. 2024. 6. 21.
[스위프트] .fileImporter()로 파일 불러오기 이번에는 SwiftUI에서 macOS일때 파일 불러오기를 해볼겁니다.스유에는 .fileImporter라는 아주 좋은 메서드가 있죠..fileImporter가 실행될 경우위와같이 파일을 불러오기위해 Open 버튼이 달려서 나오는 패널이 열립니다.맥 많이 써보신분들은 익숙하죠?기본적인 형태는 다음과 같습니다..fileImporter(isPresented:allowedContentTypes:allowsMultipleSelection:onCompletion:)그럼 어떻게 쓰는지 알아볼까요?예시코드Button("Open") { openBool.toggle()}.fileImporter(isPresented: $openBool, allowedContentTypes: [.plainText].. 2024. 6. 17.
[스위프트] SwiftUI에서 NSSavePanel로 파일 저장하기 SwiftUI에서 파일을 저장할땐 NSSavePanel을 써야 합니다.하지만 이거는 AppKit에 있는거니까 끌어와서 써야겠죠?(해당 예시 코드는 macOS전용이며 만약 타겟에 iOS를 추가할 시엔 iOS에는 NSSavePanel이 없기 때문에 반드시 에러가 납니다.) 아래는 예시 코드입니다.import SwiftUIstruct ContentView: View { @State private var textString = "" var body: some View { VStack { TextEditor(text: $textString) Button("저장") { saveFile() } .. 2024. 6. 6.
[스위프트] SwiftUI Command Group으로 상단 메뉴 만들기 맥용앱에서 프로그램 실행하면 좌상단에 나오는 각종 메뉴의 추가 방법에 대해 알아봅시다! 좌측 상단 메뉴들위와 같이 좌측 상단에 애플 로고와 함께 있는 메뉴들입니다.(기본메뉴? 아님 앱 자체 메뉴? 뭐 그런거같아요? 용어가 뭔지 모르겠넹;;)기본적인 선언방식은 다음과 같이 두가지로 있습니다.CommandMenu() { content 클로저 }CommandGroup(before:) { content 클로저 }CommandGroup(after:) { content 클로저 }CommandGroup(replacing:) { content 클로저 } 실제로 써볼까요?우선 현재 진행중인 프로젝트의 ~~App.swift 파일로 가야 합니다.import SwiftUI@mainstruct SampleApp: App { .. 2024. 5. 13.
[스위프트] 날짜와 문자열 간 변환(Date <-> String) 이번에는 생각보다 꽤 많이 쓰는 경우인 Date 와 String간의 변환을 알아봅시다.이게 목데이터를 만들어서 쓸때 날짜가 들어가야 되는경우엔 아무래도 날짜를 내 맘대로 지정해서 넣는게 편하잖아요?그래서 필수적으로 들어가야된다고 보시면 되기때문에 아주 쓸모가 많습니다. String -> Date우선 날짜형식으로 된 문자열을 Date로 만들어 봅시다.import Foundationlet dateString: String = "2024-05-09 12:34:32"let dateFormatter = DateFormatter()dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"dateFormatter.timeZone = NSTimeZone(name: "UTC") as Time.. 2024. 5. 9.
[스위프트] Some 이번에는 Some에 대해서 알아봅시다! some은 Swift 5.1에서 등장한 키워드로 연산프로퍼티인 body안에 불투명한 타입이 있음을 나타낸다고 합니다. 그럼 우선 불투명한 타입이 뭔지 알아야겠죠? 불투명한 타입 불투명한 타입이란 말그대로 뭐가 반환될지 모르는 타입을 의미합니다. 다음 예시를 볼까요 protocol Car { func showSpeed() -> String } struct Morning: Car { func showSpeed() -> String { return "Avg Speed is 60km" } } struct Ferrari: Car { func showSpeed() -> String { return "Avg Speed is 150km" } } 위처럼 Car프로토콜을 따르는 구조.. 2024. 2. 9.
[스위프트] SwiftUI - @Binding 이전에 @State에 이어 이번엔 @Binding을 알아보려 합니다. 앞서 @State는 해당 뷰안에 속해있는 프로퍼티와 뷰를 엮어주기 위한(바인딩을 위한) 프로퍼티 래퍼라고 했죠? 그렇다면 @Binding은 무엇이냐... @Binding @Binding은 @State와 비슷하지만 다릅니다. 바로 현재 뷰에서 하위뷰에 있는 데이터를 가져오기 위해서 사용합니다. 나머지는 똑같아요. 그 값을 가져와서 현재 뷰의 상태를 업데이트하기위함이죠. 물론 @Binding은 하위뷰의 데이터를 가져오기 위함이니 당연히 private을 쓰면 안됩니다. 그리고 이미 있는값을 연동해서 받아오는거라 초기값도 설정하면 안됩니다. 선언과 호출은 아래와 같습니다. // 선언 @Binding var name: String // 호출 T.. 2024. 2. 8.
728x90