본문 바로가기
반응형

전체 글1604

Swift프로젝트에 Objective-C클래스 사용하기(브릿징헤더:Bridging Header) Swift프로젝트에서 Objective-C로 짜여진 클래스를 가져다 사용할 경우 사용되는 브릿징 헤더 파일에 대한 이야기이다. 실습을 해보면서 보니 사이드 바 메뉴 구현에서는 따로 구현하지 않고 Objective-C로 구현된 클래스를 넣어 사용하는데 흥미로운 주재이다. Swift와 Objective-C를 교차 사용하는 방법에 대한 설명이다. Create Bridging Header를 선택하면 브릿징헤더 파일이 생긴다. 이 파일은 오브젝티브-C에서 정의된 객체를 스위프트 아키텍처가 참조할 수 있도록 중간에 다를 놓아주는 역할을 한다. 그래서 파일의 이름에 브릿지(Bridge)라는 단어가 붙어 있고 이 파일의 형식이 헤더 파일(*.h)이기 때문에 둘을 합쳐 브릿징 헤더 파일이라고 부르게 되었다고 한다. 파일.. 2018. 3. 6.
navigationController navigationBar숨기기 책을 보며 따라하기를 하는 중이다. 원래 이런게 이렇게 간단한 거였나? 하는 생각이 자주 든다. 내가 너무 익숙한 코드만 가지고 개발을 해 왔던것인지 아님 관심이 없었던 것인지... 이번에는 네비게이션 컨트롤의 네비게이션바를 숨기는 애니메이션 코드다. 간단하게 처리가 가능하니 응용해서 사용하면 좋을 것 같다. override func touchesEnded(_ touches: Set, with event: UIEvent?) { let bar = self.navigationController?.navigationBar; let ts = TimeInterval(0.3) UIView.animate(withDuration: ts) { bar?.alpha = ( bar?.alpha == 0 ? 1 : 0 ) } } 2018. 3. 6.
?? Nil 병합 연산자 무심결에 본 ?? 연산자. 딱 내가 좋아하는 타입이다. '??' 연산자는 Nil 병합 연산자로서 보통 연산자 앞쪽에 옵셔널 타입의 값이, 뒤쪽에는 이를 대체할 일반 타입의 값을 취한다. 연산자 앞에 작성된 옵셔널 타입의 값이 nil일 경우 연사자 뒤쪽에 있는 값을 사용하고, 그렇지 않다면 연산자의 앞쪽의 옵셔널 값을 해제하여 사용한다는 의미로 이해하면 된다. //logging @objc func logging(_ sender: UIButton) { switch self.logType { case .basic: // NSLog("버튼이 클릭되었습니다.") case .title: let btnTitle = sender.titleLabel?.text ?? "타이틀 없는" //Nil 병합연산자. NSLog("\.. 2018. 3. 6.
포항 칠포해수욕장에서 포항 칠포해수욕장에서 죽도시장에서 과메기를 구입하고 수산시장을 잠시 둘러 본 후 우리는 해안도로를 따라 포항을 구경했다. 마치 베트남 다낭의 미케해변의 길과 흡사한 해안가에서 잠시 넋을 놓고 감상하다 꼬불꼬불한 국도를 따라 올라가다 보니 칠포해수욕장이 나왔다. 주변 경관은 너무 좋은데 산업단지 특성상 공장과 시설이 너무 많이 살짝 자연스럽지 못하다는 점이 안타까웠다. 칠포해수욕장은 넓은 모래사장을 가지고 있는 꽤 큰 해수욕장이다. 20대 초반에 한번 왔던 기억이 있는 칠포해수욕장. 곤륜산 기숡의 송림이 백사장을 둘러싸고 약 4km 뻗어 있는 사장의 면적이 4만평에 이른다고 하니 그 규모가 엄청나다. 아이들을 풀어 놓으니 한 녀석은 파도와 싸우고, 한 녀석은 모래와 논다. 그렇게 우리는 또 제주를 그리워하.. 2018. 3. 6.
UITabBar 숨김처리 와 Swift 클로저 책을 보고 실습을 하다 보니 유용하거나 다시 확인을 해 봐야하는 부분, 실무에서 실제 필요한 부분들은 메모를 하는 차원에서 포스팅으로 기록을 한다. 일부 주요 내용만 정리를 하는 것이다. 추후 다시 바로 찾아 볼 수 있도록. Objective-C로 할 땐 꽤 어려웠던 것 같은데 이게 원래 이리 쉬운 작업이었나? 싶다. override func touchesEnded(_ touches: Set, with event: UIEvent?) { // let tabBar = self.tabBarController?.tabBar; //tabBar?.isHidden = (tabBar?.isHidden == true) ? false : true; UIView.animate(withDuration: TimeInterval.. 2018. 3. 5.
Swift stretchableImage iOS SDK다 보니, Objective-C에서 사용하던 것은 모두 사용 가능한듯... let image = UIImage(named: "이미지명")?.stretchableImage(withLeftCapWidth: 5, topCapHeight: 16) 이 메서드는 x, y좌표 두 개의 인자값을 받는다. 적용되면 이미지 객체의 좌측 상단(0,0)으로 간주하고 주어진 x, y 좌표에 위치한 이미지를 상하좌우로 늘려 배경을 채운다. 안드로이드의 나인패치와 비슷하다. x, y 값을 적당히 변경해가면서 테스트 해보면 재미있는 결과물을 만들어 낼 수 있다. Assets.xcassets를 사용한다면 자동으로 슬라이스를 해주는 기능이 있어 편리하게 사용할 수 있다. 보통 버튼이나 배경으로 사용되는 이미지를 늘리는데 사.. 2018. 3. 5.
반응형