본문 바로가기

iOS41

[iOS] Tag을 활용한 UIButton Action 처리 enum과 Tag를 활용하여 UIButton의 Action을 처리하는 방벙을 기록합니다. 이 글은 스토리보드가 아닌 코드 기반으로 설명되어 있습니다. UIButton의 Tag를 기능별로 Enum에 정의합니다. enum ButtonType: Int { case action1 = 1 case action2 = 2 case action3 = 3 } 위에 정의된 ButtonType으로 해당 UIButton에 맞게 tag를 설정합니다. 또한, 액션을 수행할 메서드를 3개의 버튼 selector 안에 아래와 같이 동일하게 작성합니다. private lazy var button1: UIButton = { let button = UIButton() button.setTitle("Button1", for: .normal.. 2022. 10. 28.
[iOS] Custom Navigation Controller Pop Gesture Swift 커스텀 네비게이션 컨트롤러를 설정했을 때, Pop Gesture가 작동하지 않는 이슈 해결 방법을 기록합니다. 기본적인 NavigationController를 사용했을 때, Swipe로 현재 뷰컨트롤러를 스택에서 Pop할 수 있습니다. 하지만, 네비게이션 바를 커스텀했을 때, Pop Gesture가 작동하지 않아 해결 방법을 찾게 되었습니다. 익스텐션을 활용하여 viewDidLoad 메서드에서 interactivePopGestureRecognizer의 Delegate를 설정합니다. gestureRecognizerShouldBegin 메서드에서 스택에 2개 이상의 뷰컨트롤러, 즉 rootViewController를 제외한 뷰컨트롤러들이 있을 때 gestureRecognizer가 인식을 시작합니다. impo.. 2022. 9. 22.
[iOS] 버튼 이미지가 표시되지 않는 이슈 UIButton 이미지가 표시되지 않는 이슈 해결 방법을 기록합니다. UIButton의 setImage 메서드를 통해 버튼의 아이콘 이미지를 설정할 수 있지만 아이콘 포멧이 맞지 않으면, tintColor가 표시되게 됩니다. 해당 이미지를 아이콘 포멧 이미지에 맞게 바꾸어 주면 해당 이슈를 해결할 수 있습니다. 또한, 해당 이미지를 original Image always로 렌더링하여 이슈를 해결 할 수 있고 이 방법을 아래 코드로 공유합니다. button.setImage(UIImage(named: "customImage")?.withRenderingMode(.alwaysOriginal), for: .normal) 부족한 점 피드백해주시면 감사합니다👍 Ref. https://www.dev2qa.com/ho.. 2022. 7. 11.
[iOS/Xcode] Version of Xcode is incompatible with version of the OS on the device Xcode에서 실제 디바이스의 OS 버전을 지원하지 않을 때, 오류를 해결하는 방법에 관해 기록합니다. 에러 내용 This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need to restart your mac and device in order to correctly detect compatibility. 원인 해당 오류가 발생하는 원인은 실제 디바이스의 OS 버전을 최신으로 업데이트하면서 Xcode 에서 지원하는 iOS 버전과 호환되지 않아 발생합니다. 해결 방법 1. 해당 iOS 버전을 아래 Github 레파지토리들 중에서.. 2022. 6. 17.
[iOS/Xcode] 스토리보드 없이 프로젝트 개발 설정 Xcode에서 스토리보드 없이 개발하는 방법에 관해 기록합니다. Setup Xocde Project without Storyboard 1. 사용하지 않는 스토리보드를 삭제합니다. (Main.storyboard) 2. Main Interface "Main"삭제 3. info.plist에서 Main 삭제 4. SceneDelegate에서 Main Window 생성 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return } windo.. 2022. 5. 15.
[iOS] WKWebView 정리 Swift WKWebView를 사용하면서 설정했던 것들을 기록합니다. WKWebView 특징 기존의 UIWebview를 대신하여 사용하며 iOS 9 이상의 버전을 필요로 합니다. 또한, 자바스크립트 엔진인 Nitro를 사용해서 UIWebView보다 성능이 더 좋습니다. 로컬로 저장된 파일에 대한 Ajax 요청을 지원하지 않습니다. 쿠키 허용 설정 및 고급 캐시 설정 지원을 하지 않고 앱 종료 시 HTML5 로컬 스토리지가 삭제됩니다. 기본 설정 import UIKit import WebKit class ViewController: UIViewController { var webView: WKWebView! override func loadView() { let webConfiguration = WKWebViewCo.. 2022. 2. 4.
[iOS/Xcode] 소스코드 공백 표시 Xcode에서 소스코드의 공백을 표시하는 방법에 관해 기록합니다. Editor 탭의 Invisible을 클릭하시면 간단하게 설정할 수 있습니다. 아래 사진과 같이 공백을 표시하는 설정할 수 있습니다. 2021. 12. 10.
[iOS] Unwind Segue Unwind Segue에 관해 기록합니다. Unwind Segue는 기본적인 Segue를 통해 여러 화면을 전환한 상태에서 맨 처음 View Controller로 돌아가기 위해서 사용합니다. Navigation Controller를 이용해서 rootView Controller로 Pop할 수 있지만 그렇지 않다면 Unwind Segue를 통해 해결할 수 있습니다. 아래 그림으로 예를 들자면, A View Controller -> B View Controller -> C View Controller C View Controller -> A View Controller로 돌아간다고 했을 때 또 Segue를 하면 스택에 쌓이게 됩니다. 이럴 때, UnwindSegue를 설정해서 B View Controller와.. 2021. 11. 11.
[iOS/Xcode] WKWebView 사용할 때 Log 제거 WKWebView를 사용하면서 생기는 Log를 제거하는 방법을 기록합니다. WF: _userSettingsForUser mobile: { filterBlacklist = ( ); filterWhitelist = ( ); restrictWeb = 1; useContentFilter = 0; useContentFilterOverrides = 0; whitelistEnabled = 0; } WF: _WebFilterIsActive returning: NO 위 로그와 같은 것들이 뜨게 되는데 이를 제거하는 방법을 설명합니다. 우선 Xcode 메뉴에서 Product -> Scheme -> Edit Scheme를 들어갑니다. 위 그림에서 Environment Variables에 + 버튼을 누르고 Name은 OS_A.. 2021. 7. 13.
[iOS/Xcode] Info.plist 경로 이동시 에러 해결 Info.plist 경로 이동했을 때 에러가 발생하는 이슈 해결 방법을 기록합니다. 예를 들어, Info.plist를 App 그룹으로 이동시켰습니다. 그렇게 되면 'build input file cannot be found' 와 같은 오류가 나는데 Build Settings의 Packaging 하위 항목에서 Info.plist File의 경로를 상황에 맞게 변경하면 됩니다. 2021. 7. 12.