본문 바로가기

반응형

SWIFT

Status Bar 색상 지정 방법 두가지 방법이 있지만 첫번째 방법은 권장하지 않음 앱 전체에 대해 설정 info.plist - View controller-based status bar appearance - NO AppDelegate 에 아래 코드 작성func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { application.statusBarStyle = .lightContent // .default return true } 각 뷰 컨트롤러에 대해 설정 Defalut 는 No (그러나 위에서 info.plist를 건들였다면 를 Vie.. 더보기
@IBAction, 뷰끼리 값전달, 델리게이트, 최초 응답자 간단한 정보 @IBAction 타입 지정할 때 기준 개별 타입을 선택해야 할 때 액션 메소드를 호출한 컨트롤의 속성값이 필요하거나, 이를 제어해야 할 때 Any 타입을 선택해야 할 때 서로 다른 타입의 컨트롤이 동일한 액션 메소드를 호출하게끔 처리하고 싶을 때 액션 메소드를 호출한 컨트롤의 정보가 필요 없을 때 개별 타입을 반드시 사용해야 하는 경우를 제외한 나머지 모든 경우 뷰 사이에서 값 전달할 때 프로퍼티로 받는 이유 A뷰에서 B뷰로 값을 넘길 때 아울렛 변수에 바로 받지 않고 프로퍼티에 받는 이유는 아울렛 변수는 외부에서 값을 직접 대입할 수 없는 변수이기 때문입니다. 또한, 아울렛 변수는 외부 객체에서 직접 참조할 수 없도록 제한되어 있습니다. 즉 private 변수로 생성되어 있다고 생각하면 될 것 같습니.. 더보기
*.pbxproj 삭제 했을 때 대처하는 방법 *.pbxproj 삭제 했을 때 대처하는 방법 (단, Git Commit 존재해야 합니다) 대처방법1. Git reset 명령어 이용해서 gitignore 에 pbxproj 파일 제외하기 바로 이전 커밋으로 돌아가서 project.pbxproj 파일 복사2. 다시 최근 커밋으로 돌아옵니다.3. 프로젝트 파일 - .xcodeproj 파일 오른쪽 클릭 - 패키지 내용보기 - .pbxproj 파일 붙여넣기4. 3번에서 project.xcworkspace 삭제5. 3번에서 xcuserdata 폴더 아래 username.xcuserdatad 파일 삭제6. 돌아가서 .xcodeproj 파일 들어가서 실행하면 fail 뜨는데 pods 파일 때문에 해당 파일로 열면 안되는 것 같습니다.에러 메세지 : framework.. 더보기
Switch 사용하면서 값이 배열 안에 있는지 확인하는 방법 아래와 같은 코드가 있을 때 value 를 foo or bar 배열에 존재하는지 확인하는 방법 let foo = [1, 2, 3] let bar = [4, 5, 6] let value = 5 1. ~= 연산자 만들기 func ~=(array: [T], value: T) -> Bool { return array.contains(value) } let foo = [1, 2, 3] let bar = [4, 5, 6] let value = 5 switch value { case foo: print("in foo") case bar: print("in bar") default: break } 2. where 문 사용 let foo = [1, 2, 3] let bar = [4, 5, 6] let value = 5 .. 더보기
여러 타입을 저장하기 위한 enum 만들기 Array Or Dictionary 에 Bool,Int,String 등 다양한 값을 추가하기 위해서 enum을 활용합니다. Any 타입을 사용하지 않고 다른 방법을 이용하기 위해서 enum 의 연관값을 이용합니다. 따라서, enum을 활용하는 Array Or Dictionary 에서는 다양한 타입의 값을 저장 & 관리할수 있습니다. enum 정의 enum JsonType { case string(String) case int(Int) case bool(Bool) case object(String) } enum 타입을 배열에 저장할 때 Array를 선언할 때는 타입형태에 JsonType을 선언해줍니다. 저장할 때 enum case에 정의된 형태로 값을 추가해줍니다. struct JsonArray { pri.. 더보기
iOS 배포 이미지 준비 iOS 배포 이미지 준비 이미지크기 변환 (픽셀기준) 4.7 inch : 750 x 1334 5.5 inch : 1242 x 2208 PNG 파일 미리보기로 열기 Command-Shift-S 사용하여 복제 Command-S 누르고 이름변경 및 포맷 변경 가능 알파 체크해제 후 저장 합니다. 더보기
Swift one IBAction for multiple buttons Swift one IBAction for multiple buttons Swift에서 하나의 IBAction에 다수의 Button을 등록하는 방법에 대해서 설명합니다. 비슷한 유형의 작업을 하는 버튼에 대해 하나씩 @IBAction을 만드는 것이 비효율적이라고 생각되시면 해당 방법을 사용해보세요. 해당 방법보다 더 좋은 방법이 있을수도 있으니 참고만 해주시면 감사하겠습니다. 방법 @IBAction 정의하기 Interface Builder 에서 연결하기 결과값 확인해보기 1. @IBAction 정의하기 View Controller에 아래와 같이 정의하기 @IBAction func btnNumber(btnN : UIButton) { } 2. Interface Builder 에서 연결하기 Main.storyb.. 더보기
iOS11 녹화기능 감지 iOS11 녹화기능 감지 iOS11의 녹화기능에 대해 보안이 필요한 경우가 생겼으며 별도의 DRM을 사용하지 않고 간단한 방법으로 감지하는 차선책을 찾게 되었습니다. 아래 방법 및 설명이 정확한 정보가 아닐수도 있으며 개인적인 테스트 이후에 작성하는 글입니다. 제가 작성하는 글보다 더 좋은 방법이 있을수도 있으니 참고해주시면 감사하겠습니다. 방법 isCaptured 를 사용하여 메소드 이용 AppDelegate 에서 앱의 상태에 따라 실행되는 delegate 함수 사용 감지 Method iOS 버전 체크 후에 isCaptured가 true 인 경우에 그에 대한 정보를 서버에 전송하거나 기타 작업을 진행합니다. func recordingLog(){ if #available(iOS 11.0, *) { let.. 더보기

반응형