Development2014.09.09 16:40

추석 연휴 동안 그동안 밀렸던 개인 프로젝트를 하는데 많은 시간을 할애중이다.

오늘 언급할 내용은 테이블뷰 또는 아웃라인뷰에서 커스텀 셀을 이용한 정교한 이미지와 텍스트를 표시하는 부분이다.

OS X 10.8부터 테이블뷰 및 아웃라인뷰는 iOS처럼 뷰 기반으로 셀을 만들 수 있도록 지원한다.

뷰 기반으로 하면 커스텀 셀들을 마우스로 드래그만 해서 간단하게 만들 수 있다. 하지만 왜 나는 커스텀 셀을 사용하는가!

이유는 다음과 같다.


  • 당연한 이유지만 커스텀 셀 기반이 뷰 기반보다 빠르다. 특히 많은 데이터를 처리하는 과정에서 더더욱 차이가 난다.
  • 텍스트 편집같은 기능을 사용하기 위해서는 뷰 기반 셀에서는 별도의 추가적인 액션들을 많이 처리해야 한다. 특히 기능이 많을수록 지저분한 코드들이 많이 생긴다.
  • 뷰 기반 셀은 기존 셀 방식에 비해 재활용도가 생각보다 많이 낮다. 뷰 기반으로 하다보니 당연히 커스텀을 생각을 하고 만들다보니 재활용 부분이 낮을 수 밖에 없다.

일단 뷰 기반 셀의 단점을 먼저 말했지만 셀 기반 역시 단점이 있다.

  • 셀은 뷰 기반 셀에 비해서 커스텀 작업이 녹록치 않다.
  • 마우스 드래그 대신 좌표로 승부해야 한다...ㅠㅠ
  • 작업 후 결과물들을 정밀하게 확인해야 한다. (뷰 기반에 비해 약 5배 정도의 노력이 필요함...ㅠㅠ)

아래 그림을 보면 알 수 있지만 셀 기반으로 작성하게 되면 컴파일 후 스크린샷을 찍어서 정밀하게 확인하는 절차를 반드시 해봐야 한다.

위 그림은 셀 기반으로 작성한 후 텍스트의 높낮이가 정확하게 맞는지를 포토샵에서 확인하는 그림이다.

아래 그림 역시 다른 항목들을 비교해서 텍스트 높낮이가 맞는지 확인하는 절차이다.



뷰 기반 셀을 이용하는 경우 인터페이스 빌더에서 좌표 및 마우스 또는 키보드를 이용해서 쉽게 조절할 수 있는 것임에도 불구하고 아직도 나는 이런 방법을 사용하는 것은 앞서 언급한 여러 가지 내용 때문이다.

내가 하는 방법 자체가 절대적인 것은 아니지만 그래도 한번쯤은 고려해봐야 하는 내용임에는 틀림이 없으니 비슷한 일을 하시는 개발자분들도 참고하셨으면 한다.






저작자 표시
신고
Posted by littlehj
Mac Life2014.09.02 20:47

얼마전 해외 사이트의 홍보를 통해 매우 저렴하게 구입한 애플 매직 마우스용 무선 충전기인 Mobbe Magic Charger가 도착했다.


Apple | iPhone 5 | Normal program | Spot | 1/20sec | F/2.4 | 4.1mm | ISO-160 | Off Compulsory | 2014:09:02 20:03:45


당연한 이야기겠지만 매우 쉬운 설치 환경과 비교적 깔끔한 인터페이스가 돋보이는 이 액세사리는 그간 매직 마우스 배터리가 떨어졌을 때의 아주 작은 스트레스에서 벗어나게끔 해주는 액세사리인 듯 하다.

단점이라면 풀 충전 시간이 약 5시간 정도라는 점이고 그 외 부분들은 그냥저냥 쓸만해 보인다.

무선 충전이라는 것외 배터리 팩을 장착한 매직 마우스의 무게가 일반 배터리를 사용했을 때보다 좀 가볍다는게 장점이라면 장점이라고 할 수 있다.


이 제품을 구입할 때 추가 배터리 팩은 하나 더 구입해서 집에 있는 다른 맥에서도 함께 사용할 수 있도록 나름 조치를 취했다.

이제 잘 써보자.

저작자 표시
신고
Posted by littlehj
Development2014.08.26 20:12

며칠전부터 눈에 거슬리는 게 있었다.

개인적으로 하는 작은 프로젝트에서 Yosemite의 새로운 UI 관련 기능들을 숙지하면서 간단하게 만들어 본 윈도우에서 그 문제가 발생했다.




위 그림은 새롭게 추가된 NSVisualEffectView를 사용한 아주 정상적인 케이스이다.

그런데 언젠가부터 아래 그림처럼 윈도우가 InActive가 되었을 때 윈도우 버튼들이 잘 어울리지 않는다는 생각이 들게되었고 왜 그런지 조사를 해볼 필요가 있었다.



그래서 애플의 소프트웨어들은 어떻게 하는지를 살펴봤더니 역시 내가 눈에 거슬려하던 부분이 존재하지 않았다.

아래 그림을 보면 알 수 있지만 Yosemite의 계산기 윈도우가  Inactive가 되면 윈도우 버튼들이 검정색이 잘 어울리도록 비활성화되서 나타난다.

여기서 내가 뭔가 잘못했다는 것을 파악하고 몇몇 API들을 유심히 봤더니...답은 아주 간단한 곳에 있었다.



아래와 같은 코드만 추가해주면 애플처럼 똑같은 상황으로 만들어준다.


self.window.appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark];



만약 위 코드를 추가하지 않는다면 윈도우는 Aqua 기본 인터페이스 요소를 사용하게된다. 그러기 때문에 Dark와 어울리지 않는 비활성화 버튼들이 사용된다. 하지만 위 코드를 추가하게 되면 Dark 모드와 어울리는 Appearance가 로드되기 때문에 이에 관련된 비활성화 버튼이 활성화되는 것이다.

이는 10.9부터 공개된 NSAppearance라는 클래스에 있다.

애플 개발자 페이지에서 나온 NSAppearance에 대한 이야기를 잠깐 들여다보면 다음과 같다.


An NSAppearance object represents a file that specifies a standard or custom appearance that applies to a subset of UI elements in an app. An app can contain multiple appearance files and—because NSAppearance conforms to NSCoding—you can use Interface Builder to assign UI elements to an appearance.


실제 클래스 구조도 매우 간단하며 뭔가 더 해볼만한 게 없다.

이유는 간단하다. 사용자화된 인터페이스 파일을 만들고 이를 로드해서 사용하면 되기 때문이다. (이미 오픈소스들에서 NSAppearance를 이용한 커스터마이즈 방법들이 많이 나오고 있다.)


간단하죠?



저작자 표시
신고
Posted by littlehj