'watchOS'에 해당되는 글 2건

  1. 2016.09.05 What's New in Cocoa Touch [Session 205] 2/4 (2)
  2. 2016.08.13 What's New in Cocoa Touch [Session 205] 1/4


What's New in Cocoa Touch

WWDC 2016 - Session 205 



WWDC 2016 세션 205의 주제인 What's New In Cocoa Touch 요약정리입니다.

이 포스트는 세션 205요약 중 두 번째 글입니다.


지난 포스팅

  1. 2016/08/13 - [WWDC/WWDC2016] - What's New in Cocoa Touch [Session 205] 1/4


이번 포스팅에선 아래 주제를 정리하고, 나머지 주제는 다음 포스팅에서 이어집니다.


# Building better user interfaces

  • Accessibility Inspector
  • Speech Recognition
  • Smarter Text Input
  • Dynamic Type
  • Improved Customization
  • Peek & Pop
  • Refresh Control
  • Collection View
  • Advanced in UIKit Animations



# Building better user interfaces

iOS 10에서 유저와 앱 간의 상호작용(interaction) 그리고 유저 인터페이스(UI)에 대해 생각해 봅니다.

가장 먼저 생각해 볼 것은 모든 사람이 여러분의 애플리케이션과 상호작용을 할 수 있도록 만드는 것입니다.


  • Accessibility Inspector
  • UI 요소의 접근성 프로퍼티를 곧바로 파악하고 연결할 수 있습니다.


    기기 또는 시뮬레이터에서 애플리케이션의 접근성 평가를 확인할 수 있습니다. 이를 통해 접근성 문제를 해결할 힌트를 얻을 수 있습니다.




  • Speech Recognition
  • 새로운 제스쳐와 음성 인식으로도 애플리케이션과 상호작용 할 수 있게 되었습니다. 

    간단한 API로 영어 뿐만 아니라 다른 언어도 인식합니다.


    SFSPeech 클래스를 통해 음성인식을 할 수 있습니다. 

    오디오 파일 또는 실시간 오디오 스트림에도 사용할 수 있습니다. 실시간 음성 분석이 가능하다는 뜻입니다.

    요청(request)를 통해 받아쓰기나 문자열을 통한 인식을 하도록 할 수 있습니다.

    결과(result)를 통해 콜백 받습니다. 쓰기 쉽대요.




  • Smarter Text Input
  • 텍스트 필드에 컨텐츠의 종류에 대해 정보를 추가할 수 있습니다. 이를 통해 빠른 입력을 지능적으로 제시할 수 있도록 할 수 있죠.

    예를 들어, 위치에 관련된 텍스트 필드라면 빠른 입력에서 주소를 볼 수 있습니다. 

    이메일, 전화번호, 신용카드 번호 등의 컨텐츠 종류를 표현할 수 있습니다.



  • Dynamic Type
  • iOS 7에서 추가된 동적 타입(dynamic type)의 기능이 iOS 10에서 더 추가되었습니다.

    동적 타입을 위해 컨텐츠 사이즈 카테고리를 만들었습니다.

    iOS 10 이전에는 컨텐츠 사이즈 카테고리는 UIApplication의 프로퍼티였습니다.

    사용자가 컨텐츠 사이즈를 변경하거나 하면 그에 대응하기 위해 노티피케이션을 수신하고 있어야 했습니다. 그렇지만 이제는 하나의 특성(trait)으로 통합되었기 때문에 노티피케이션을 수신할 필요가 없습니다.

    이제는 동적 타입을 익스텐션으로 사용이 가능합니다. 



    iOS 10에서는 UIKit에 이전부터 존재하던 관련 요소들에도 동적 타입을 적용하였습니다.

    텍스트와 관련된 UI 요소인 텍스트 필드, 텍스트 뷰, 레이블 등이 컨텐츠 사이즈 카테고리를 위한 글꼴 적용을 사용할 수 있게 되었습니다.



  • Improved Customization
  • UIKit에 사용자화(커스터마이징)이 대폭 추가되었습니다. 바 버튼 아이템이 그 좋은 예가 되겠습니다.

    탭바 아이템에 배치 색상을 사용자화 할 수 있으며, 텍스트에 속성(attributes)를 추가할 수 있습니다. 선택되지 않은 상태의 색상을 변경할 수도 있습니다.



  • Peek & Pop
  • 웹뷰에도 또 다른 방법으로 사용자화가 가능하게 되었습니다.

    3D 터치를 이용한 Peek & Pop 기능을 뷰컨트롤러를 위한 UIKit의 간단한 API만으로 추가할 수 있습니다. WKWebView에도 이런 기능이 추가되었습니다.

    웹뷰에서도 Peek & Pop을 좀 더 쉽게 제어할 수 있습니다. 다시 말해서 Peek 할 때 사용하는 뷰 컨트롤러를 사용자화 할 수 있습니다. Peek을 하면 미리보기를 할 수 있고, Pop을 하면 여러분의 앱 안에서 무슨 처리를 할 지 결정할 수 있습니다. 웹뷰 클래스의 델리게이트 메서드를 통해 이런 일들을 처리할 수 있습니다.

    UIKit에서 Peek & Pop 동작을 할 때, 블러 효과같은 기본적인 효과 외에도 사용자가 Peek 하려는 것을 감지하고, 어떤 행위를 할 것인지 감지해서 여러분만의 전환효과를 줄 수 있습니다. 



  • Refresh Control
  • Refresh Control을 UIScrollView와 그 자식 클래스에서 모두 사용할 수 있습니다. 즉, UITableView에만 제공되었던 기본적인 refresh control을 콜렉션 뷰를 포함한 여러 스크롤 환경에서 사용할 수 있게 되었다는 뜻입니다.



  • Collection View
  • 작년에는 콜렉션뷰의 flow layout의 새로운 모드가 생겼습니다. 자동 모드를 사용하면 더이상 셀의 크기를 예상하기 위하여 계산하지 않아도 됩니다. 또한, 스크롤뷰의 페이징 기능을 사용할 때 셀을 재정렬(reordering)하는 기능을 구현하였습니다.

    올해는 더욱 부드러운 스크롤을 위해 새로운 기능이 추가되었습니다.

    만약 셀에 복잡한 정보를 나타내야 할 때에는 빠른 스크롤을 하게된다면 버벅일 수 있었는데, 이는 사용자 경험으로 좋지 못하죠.

    그래서 cell prefetching 기능을 추가했습니다. 셀이 화면에 나타나기 전에 셀과 데이터를 미리 로드해 둘 수 있습니다. 물론 언제 어떻게 불러올지는 자동으로 모두 처리됩니다.  

    iOS 10으로 빌드한다면 셀을 미리 불러오는 것들은 자동으로 처리될 것입니다. 그렇지만 데이터를 미리 로드해 오는 것은 새로운 델리게이트 프로토콜 메서드를 통해 구현해 주어야 합니다.

    (테이블뷰에도 이런 기능이 추가되었습니다)


  • Advanced in UIKit Animations
  • UIViewPropertyAnimator라고 불리는 애니메이션 관련 기능이 추가되었습니다. 이는 새로운 애니메이션 API입니다.

    취소할 수 있고, 되감을 수 있으며, 타이밍을 정할 수 있으며, 완벽히 동적으로 동작합니다.



    애니메이션을 동영상의 타임라인처럼 관리를 할 수 있습니다. 

    타이밍과 동작시간을 매개변수로 전달하여 애니메이션에 추가할 수 있습니다.

    애니메이션 객체가 애니메이션을 표현하게 됩니다. 동작 중에 다양한 변화를 추가하거나 수정할 수 있습니다.

    뷰컨트롤러 작동 시스템에 완벽하게 녹아들어가 있습니다.

    이 새로운 애니메이션 기능의 강력한 포인트는 애니메이션을 사용자와 직접 상호작용 할 수 있도록 구현할 수 있다는 점입니다.



    # 간단요약

    Accessibility Inspector

    • 내 앱에 사용자 접근성 사용 기능이 어떤 것이 적용되어 있는지를 개발자가 더욱 편리하게 확인할 수 있는 기능이 추가됨


    Speech Recognition

    • 오디오 또는 실시간 입력으로도 음성인식 기능을 사용할 수 있음
    • 영어 외에 다른 나라 언어도 많이 지원함


    Smarter Text Input

    • 텍스트필드에 입력될 데이터가 어떤 종류인지 지정해두면 사용자가 원하는 데이터를 더 편리하게 입력할 수 있도록 도와줌


    Dynamic Type

    • 컨텐츠 사이즈 카테고리에 따라 글꼴 등을 알아서 표현해 줌


    Improved Customization

    • UIKit에 사용자화(커스터마이징) 할 수 있는 영역이 대폭 추가됨 (바 버튼 아이템의 여러 속성 등)


    Peek & Pop

    • 3D 터치를 통한 미리보기 기능의 전환효과를 사용자화 할 수 있음


    Refresh Control

    • Refresh Control을 테이블뷰 외에도 UIScrollView의 모든 자식클래스에서 사용할 수 있게 됨


    Collection View

    • 페이징 할 때 등 flow layout이 개선됨
    • 데이터를 미리 불러와 두고 처리해 둠으로써 콜렉션뷰를 조금 더 쾌적하게 사용할 수 있도록 개선


    Advanced in UIKit Animations

    • 애니메이션을 손쉽고 유려하게 다룰 수 있는 많은 기능이 추가됨
    • 애니메이션 표현 정보를 객체로 다룰 수 있게 되었고 손쉽게 사용자와 상호작용(interaction) 할 수 있음






    * 잘못되거나 부족한 내용이 있다면 덧글 남겨주시면 감사하겠습니다.
    * What's New in Cocoa Touch [Session 205]의 나머지 내용은 다음 포스팅에서 이어집니다.

    이어지는 다음(그리고 그 다음) 포스팅 내용

    # Adopting system features

    # Integrating with iOS


    2016/12/16 - [WWDC/WWDC2016] - What's New in Cocoa Touch [Session 205] 3/4

    2017/01/04 - [WWDC/WWDC2016] - What's New in Cocoa Touch [Session 205] 3/4





    by yagom

    facebook : http://www.facebook.com/yagomSoft

    facebook group : https://www.facebook.com/groups/yagom/


    p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

    RSS Feed 받기   



    저작자 표시 비영리 변경 금지
    신고
    Posted by yagom


    What's New in Cocoa Touch

    WWDC 2016 - Session 205 


    WWDC 2016 세션 205의 주제인 What's New In Cocoa Touch 요약정리입니다.

    이 포스트는 세션 205요약 중 첫 번째 글입니다.

    이번 포스팅에선 아래 주제를 정리하고, 나머지 주제는 다음 포스팅에서 이어집니다.


    # What's Not New in Cocoa Touch

    • Adaptivity
    • Advanced Touch Input
    • Keyboard Support

    # Core technologies

    • Swift 3
    • Grand Central Dispatch
    • Foundation
    • UIPasteboard
    • Wide Color
    • Image Renderer
    • Asset Management






    # What's Not New in Cocoa Touch

    작년에 변경된 코어한 내용들에 대한 소개입니다.



    작년에 3D Touch를 탑재한 iPhone 6s를 출시. 12.9인치 및 9.7인치 iPad Pro 출시. 애플 펜슬 및 스마트 키보드 출시.

    이런 제품들은 새로운 기능들을 앱에 유려하게 넣을 수 있도록 기능이 추가되었습니다.


  • Adaptivity
    • 2년 전 사이즈 클래스 기반의 반응형 기술을 소개했습니다. iPhone은 Compact 사이즈, iPad는 Regular 사이즈입니다. 그러면 iPad Pro는 Gigantic(거대)사이즈를 적용해야 할까요?



      당연히 아니겠죠. 사이즈 클래스가 중요해진 만큼 그를 지원하는 많은 툴들이 보강되었습니다. 인터페이스 빌더를 비롯하여 오토 레이아웃과 에셋 카탈로그까지 프레임워크 전반적으로 새로운 기능들이 보강되었습니다. 


    • Advanced Touch Input
      • iPad Air 2와 iPad Pro는 화면 재생 빈도(screen refresh rate)보다 빠르게 터치 입력 스캐닝을 120 HZ로 할 수 있습니다.

        방향과 각도도 파악할 수 있고, 더 정확한 위치와 압력을 인식할 수 있는 애플 펜슬응 사용할 수 있습니다. iPhone 6s에서는 이를 3D Touch 기술을 이용하여 인식할 수 있습니다.

        위 기능들을 사용하기 위해 iOS 9 및 iOS 9.1에서 새로운 API를 사용할 수 있었습니다.



        • Keyboard Support

        키보드 단축키 API는 iOS 7 부터 사용할 수 있었지만, iOS 9 부터는 단축키를 화면에 자동으로 표시할 수 있는 기능이 추가되었기 때문에 더욱 중요해 졌다고 할 수 있습니다. 커맨드 키를 계속 누르고 있으면 자동으로 단축키를 화면에 표시해줍니다.


        # What's New in Cocoa Touch

        이번 iOS 10에 변경된 내용들에 대한 소개입니다.



        Core technologies

        이번 iOS 10에 변경된 중요한 내용들에 대한 소개입니다.



        • Swift 3


        Before - Swift 2.2


        After - Swift 3.0

        거의 모든 API가 새로워졌습니다.
        Objective-C의 문법에서 Swift의 문법으로 변환하는 규칙을 변경하였습니다. 첫 번째 파라메터 이름을 사용하게 변경하여 좀 더 명확하게 표현할 수 있으며, (UIColor의 blackColor가 black으로 변경된 것처럼) 타입 메서드 이름이 타입 이름과 중복되던 현상을 줄일 수 있습니다.

        코어 그래픽(Core graphics) 메서드도 좀 더 쓰기 용이하게 변경되었습니다.

        GCD(Grand central dispatch)가 이제 완전한 객체형 API로 변경되었습니다.

        • Grand Central Dispatch

        개인 큐(private queue)를 생성할 수 있습니다. 큐 작업 아이템이 동기로 실행될 때, 오토 릴리즈 풀에 있는 각각의 작업 아이템을 래핑할 수 있도록 큐를 설정할 수 있습니다.  


        • Foundation

        Foundation도 스위프트의 발전 사항을 많이 적용하였습니다. 많은 클래스에서 NS 접두어를 없애고 새로운 기능을 추가했으며, Foundation API에 값 타입(Value types)를 더 추가했습니다.


        길이나 측량 단위도 모두 지원합니다. 

        AP 601 날짜 형식(Date format)도 추가했습니다.

        NSDateInterval을 통해 날짜를 계산하기 더 편리해졌습니다.

        • UIPasteboard

        UIPasteboard API를 사용하여 여러분의 앱에서 Mac과 iOS 기기 간에 복사/붙여넣기 영역을 공유할 수 있습니다. 

        한 가지 알아두어야 할 점이 있습니다. 큰 이미지 등과 같이 매우 큰 에셋을 가져오려면 1~2초 정도 걸릴 수 있습니다. 이를 피하려면, 그 데이터가 필요한지 아닌지를 먼저 판단해 주어야 합니다. API를 통해 URL, 이미지, 색상 등의 정보가 있는지 먼저 확인해 볼 수 있습니다. 


        pasteboard로 어떤 정보들을 실어 보낼지 제어할 수 있습니다. 데이터를 보호할 수도 있고, 만료시각을 설정할 수도 있습니다.


        • Wide Color

        iMac의 5K 화면 및 iPad Pro 9.7 인치의 하드웨어에 적용될 수 있는 기능입니다. 기존 하드웨어에서는 표현할 수 없었던 색상을 표현할 수 있습니다.

        색상을 표현하는 방법을 변경하고 있습니다. iOS 기기는 sRGB 색상을 사용했습니다. 이제는 확장된 sRGB(extended sRGB)를 사용합니다.

        iOS 10 API를 사용하여 확장된 색상을 사용할 수 있습니다.



        확장된 색상을 사용하는 그 첫 번째는 UIImageView입니다.  단순히 UIImageView를 사용하는 것으로도 광역 색상(wide color)을 사용합니다. 사실 iOS 9.3부터 그렇게 관리되어왔습니다. 



        기존에 존재하던 이니셜라이저 외(init(red: green: blue: alpha:))에 새로 하나(init(displayP3Red: green: blue: alpha:))가 추가되었습니다. 

        상단의 이니셜라이저로 확장된 sRGB 색상을 표현할 수 있습니다.

        당신이 광역 색상(wide color) 스펙으로 displayP3를 사용하려면 하단의 displayP3 이니셜라저를 사용하면 됩니다. 따로 색 공간(color space)를 관리하는 클래스는 없습니다.


        • Image Renderer

        이제까지 여러분은 이미지 UIGraphicsBeginImageContext를 사용하여 이미지 랜더링을 하고 있었습니다. 이런 방식은 이미지를 화면 밖에서 랜더링 한다는 문제점이 있었습니다.

        이 방법은 32비트 sRGB만 사용할 수 있습니다. 확장이 용이하지 못하고 좋지 못한 API의 형태였습니다.



        그래서 UIGraphicsRenderer 클래스를 만들었습니다. 

        이 클래스를 사용하면 9.7인치 iPad에서는 광역 색상 컨텍스를, 다른 기기에서는 기존 색상 컨텍스를 자동으로 판단하여 사용합니다. 

        또한, 블럭을 기반으로 설계되어 사용하기 쉽습니다. 또, 객체 기반 API로 설계하였기 때문에 이미지와 PDF를 위한 클래스를 늘렸습니다.

        또 중요한 점은 이 클래스는 컨텍스트의 활동시간(lifetime)를 관리합니다. 메모리 관리가 훨씬 용이해 졌다는 뜻이겠죠.

        • Asset Management

        이미지 에셋 카탈록에도 새로운 기능이 추가되었습니다. 에셋 카탈록이 광역 색상을 지원하고, 좌에서 우, 우에서 좌의 표현, 그리고 이미지 압축을 관리합니다. UIKit 시스템에 포함되어 있습니다.


        여러분의 애플리케이션에 광역 색상 에셋을 포함시켰을 때, 광역 색상을 사용하지 않는 기기에는 배포되지 않도록 구성할 수 있습니다. 또, 그런 기기로 배포하기 위해 sRGB로 자동으로 변형하여 주게됩니다. 이는 App Thinning 기능과 호환되어 적절한 에셋이 적용될 수 있도록 하여 앱을 더욱 가볍게 만들어 줄 수 있습니다.


        기기에 따라 이미지를 손실압축 할 수 있습니다. 용량과 화질 사이의 최상의 타협점을 찾아냅니다. 이 또한 App Thinning 기능과 호환됩니다.


        이미지마다 왼쪽읽기 및 오른쪽읽기에 따라서 이미지가 반전 되어야 하는지 아닌지를 지정할 수 있습니다.




        * 잘못되거나 부족한 내용이 있다면 덧글 남겨주시면 감사하겠습니다.
        * What's New in Cocoa Touch [Session 205]의 나머지 내용은 다음 포스팅에서 이어집니다.

        이어지는 다음(그리고 그 다음) 포스팅 내용

        # Building better user interfaces

        # Adopting system features

        # Integrating with iOS


        2016/09/05 - [WWDC/WWDC2016] - What's New in Cocoa Touch [Session 205] 2/4

        2016/12/16 - [WWDC/WWDC2016] - What's New in Cocoa Touch [Session 205] 3/4

        2017/01/04 - [WWDC/WWDC2016] - What's New in Cocoa Touch [Session 205] 3/4




        by yagom

        facebook : http://www.facebook.com/yagomSoft

        facebook group : https://www.facebook.com/groups/yagom/


        p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

        RSS Feed 받기   

        저작자 표시 비영리 변경 금지
        신고
        Posted by yagom


        티스토리 툴바