swift82 MacOS app개발 시 custom font 추가하기 iOS에서 하는 방식과 동일하게 하였는데도 custom font를 인식하지 못하는 현상이 있어 한참을 헤매고 있었는데, 다행히 SOF에 동일한 문제에 대한 해결 방법이 나와있어 도움을 받았습니다. 다른 방식은 iOS에서 custom font를 추가하는 것과 동일하고, 원하는 타겟의 info.plist에 아래의 key, value를 추가해주면 됩니다. 이 key의 값으로 설정된 path에서도 font를 찾는다고 합니다. 이걸 따로 설정해줘야 한다는 건, MacOS에서 기본적으로 읽는 font 경로와 제가 추가한 font의 경로가 달라서 그렇다는 얘기일텐데.. 왜 iOS랑은 다르게 되어 있는 지 궁금하긴 합니다만 정확한 이유는 모르겠습니다. 혹시나 저와 비슷한 현상이 있으신 분들께 도움이 되면 좋겠습니다... 2025. 1. 6. Xcode Asset에서 unassigned가 발생할 때 해결 방법 Asset에 넣은 뒤에는 이름을 영어로 바꾸어서 사용하고 있었지만 원본 파일 이름에 한글이 들어가 있던 파일이 하나 있었는데, 해당 파일에서 unassigned 문제가 생겼습니다. 처음으로 한글이 들어간 파일을 사용해봤더니 처음 보는 문제였습니다. commit 과정에서 문제가 있었나 싶어서 파일을 삭제하고 clean build도 해본 다음 다시 파일을 넣었는데도 동일한 문제가 있어서 뭔가 이상하다 생각하게 되었습니다. 구글링을 좀 해보니 다행히도 금방 해결책을 찾을 수 있었습니다. 영어로만 이루어진 이름으로 원본 파일명을 바꿔서 해결했다는 사례가 있어서 저도 시도해보았고 이 방법을 이용하니 unassigned 문제가 사라졌습니다.혹시 그래도 문제가 남아 있는 경우라면 clean build도 한 번 해보.. 2024. 12. 23. SwiftUI Segment Picker의 round 유지하며 background color 변경하기 SwiftUI의 Picker view의 `pickerStyle`을 .segmented로 설정해주면, UIKit의 `Uisegmentedcontrol`과 같은 모양의 UI를 사용할 수 있습니다. 기본적으로 배경색이 회색이고 round된 corner를 가진 모양입니다. 배경색상을 변경할 필요가 있었고, `background`를 설정해주면 될 것 같아 적용해 보았습니다. struct SegmentedView: View { @Binding var element: PickerElement var body: some View { Picker(selection: $element) { ForEach(PickerElement.allCases) { .. 2024. 11. 18. Structure의 immutability value 타입인 struct의 인스턴스는 let로 선언되는 경우, 내부의 변수가 var로 선언되어 있다 할지라도 해당 변수의 값을 변경할 수 없습니다. struct MyStruct { var id: Int } let structA = MyStruct(id: 0) structA.id = 1 // Error: Cannot assign to property: 'structA' is a 'let' constant struct 인스턴스 자체를 var로 선언해야만 내부 값을 변경할 수 있습니다. 왜 그럴까? 이는 struct가 value 타입인 것과 연관이 있습니다. value 타입인 struct는 내부의 변수 값이 변경될 때, 기존의 인스턴스의 값이 변하는 것이 아니라 마치 새로운 인스턴스가 생성되는 것 처럼 .. 2024. 4. 21. 저장프로퍼티를 extension에 정의할 수 없는 이유 Extension은 class, struct, protocol, enum에 사용이 가능한 기능으로, 기존 타입에 새로운 기능을 추가하도록 도와줍니다. 직접적인 코드 접근 권한이 없는 프레임워크나 라이브러리 등의 기능을 확장할 수 있게 해주어 매우 유용하게 사용이 됩니다. 이런 extension에는 저장 프로퍼티를 사용할 수 없다는 제한이 있습니다. 그 이유는 기존 타입의 추가적인 메모리를 사용할 수 없다는 특성 때문입니다. 기존 타입의 추가적인 메모리를 사용하면, compile 시 instance를 생성할 때 문제를 일으킬 수가 있다고 합니다. 저장 프로퍼티는 추가적인 메모리를 요구하는 프로퍼티이기 때문에 compile 시 문제를 야기하게 되고, 그렇기 때문에 extension 내부에 저장이 불가능 합니.. 2024. 4. 8. super.viewDidLoad를 호출하는 이유 ViewController를 만들 때 기본적으로 구현되어 있는 코드이기 때문에 아무런 생각 없이 호출하던 super.viewDidLoad(). 왜 꼭 호출해야 하는 것인지 문득 궁금해져서 알아보게 되었습니다. (viewDidLoad로 특정지었지만 viewWillAppear나 viewDidAppear 등등 여러 override 메서드들에 모두 해당되는 이야기입니다.) SO에도 몇몇 해당 질문들이 있었는데, 'super.viewDidLoad() 메서드를 호출하지 않아도 아무런 문제가 없고 호출했을 때와 차이가 없다. 그런데 왜 꼭 호출을 해야하는가?'를 문의하는 글들이었습니다. 그 중에 가장 저에게 와닿았던 답변은 이러했습니다. Also, let's say you have some view controlle.. 2024. 3. 21. 이전 1 2 3 4 ··· 14 다음 반응형