사과
  • 애플 개발자 문서 한글 번역
  • App Frameworks
    • Foundation
      • 숫자, 데이터와 기본값
      • 문자열과 텍스트
      • 컬렉션
      • 날짜와 시간
      • 데이터 포맷
      • 작업 관리
        • Operation
        • OperationQueue
        • Timer
      • 리소스
        • Bundle
      • 파일 시스템
        • FileManager
      • Notification
        • NSKeyValueObserving
      • URL 로딩 시스템
        • 웹사이트 데이터를 메모리에 저장하기
        • URLSession
          • URLSessionConfiguration
            • urlCache
            • requestCachePolicy
          • configuration
        • URLSessionTask
        • URLRequest
        • URLResponse
        • HTTPURLResponse
        • 캐시 데이터에 접근하기
        • CachedURLResponse
        • URLCache
      • Object Runtime
        • NSValue
    • UIKit
      • UIKit으로 앱 개발
      • 앱과 환경
        • 앱 라이프 사이클 관리하기
        • 앱 실행에 대응하기
        • UIApplication
      • 문서, 데이터와 클립보드
      • Mac Catalyst
        • iPad 앱을 Mac 버전으로 만들기
        • 아이패드 앱의 맥 최적화
      • 뷰와 컨트롤
        • UIView
        • Table Views
          • UITableView
          • UITableViewCell
          • UIRefreshControl
        • UIScrollView
      • View Controllers
        • UIViewController
        • UITableViewController
        • UISearchController
      • 애니메이션과 햅틱
        • 프로퍼티 기반 애니메이션
          • UIViewPropertyAnimator
        • View controller 전환
      • 터치, 누르기, 제스처
        • UIResponder
        • UIKit 제스처 처리
        • 다중 제스처 인식기 조정
        • UILongPressGestureRecognizer
        • UIPanGestureRecognizer
          • maximumNumberOfTouches
          • minimunNumberOfTouches
          • translation(in:)
          • setTranslation(_:in:)
          • velocity(in:)
        • UIGestureRecognizer
    • Swift
      • 스위프트 표준 라이브러리
        • 메모리 직접 관리
          • 포인터 파라미터를 사용하는 함수 호출
          • UnsafePointer
          • UnsafeMutableRawBufferPointer
    • SwiftUI
      • 뷰와 컨트롤
        • View
        • Text
        • TextField
      • 뷰 레이아웃과 표현
      • 그리기와 애니메이션
      • 프레임워크 통합
      • 상태와 데이터 흐름
  • Graphics and Games
    • Core Animation
      • CALayer
      • CAAction
      • CAShapeLayer
      • CADisplayLink
    • Core Graphics
      • CGFloat
      • CGPath
  • App Services
    • Combine
    • WebKit
      • WKWebView
  • Media
    • AVFoundation
      • 시스템 오디오 상호작용
        • AVAudioSession
          • AVAudioSession.Category
            • ambient
            • multiRoute
            • playAndRecord
            • playback
            • record
            • soloAmbient
          • AVAudioSession.Mode
      • AVFoundation 자료형
  • Documentation Archive
    • 번들 프로그래밍 가이드
      • 번들에 대해
      • 번들 구조
    • Key-Value Observing 프로그래밍 가이드
    • Threading 프로그래밍 가이드
      • About Threaded Programming
      • Thread Management
  • ETC
    • Not Found
Powered by GitBook
On this page
  • Summary
  • 개요
  • 메뉴바 항목 추가
  • 설정창 표시
  • Primary 뷰 컨트롤러에 반투명 배경효과 적용
  • 뷰에서 포인터 감지
  • 같이 보기
  • App Support
  1. App Frameworks
  2. UIKit
  3. Mac Catalyst

아이패드 앱의 맥 최적화

macOS의 시스템 기능상 장점을 취하면서 여러분의 아이패드 앱을 맥 앱에 가깝게 만들어 보세요

PreviousiPad 앱을 Mac 버전으로 만들기Next뷰와 컨트롤

Last updated 4 years ago

원문 출처

Summary

Framework

  • UIKit

개요

맥 버전으로 만들어진 iPad 앱은 별다른 노력을 기울이지 않아도 다음과 같은 macOS의 시스템 기능들을 지원합니다:

  • 앱 기본 메뉴바

  • 트랙패드, 마우스, 키보드 입력 지원

  • 윈도우 리사이징과 풀 스크린 디스플레이 지원

  • 맥 스타일 스크롤 바

  • 복사 붙여넣기 지원

  • 드래그 앤 드롭 지원

  • 시스템 터치바 컨트롤 지원

그 외에도 더 많은 시스템 기능들을 개발자가 확장 지원할 수 있습니다.

중요

Mac Catalyst로 빌드된 맥 앱은 Mac Catalyst에서 사용 가능한 것으로 명시된 API만 사용할 수 있습니다. (Ex. , ) Mac Catalyst는 사용할 수 없는 AppKit API에 대한 액세스를 지원하지 않습니다.

메뉴바 항목 추가

설정창 표시

Primary 뷰 컨트롤러에 반투명 배경효과 적용

반투명 배경을 primary 뷰 컨트롤러에 적용하는 예시

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    let splitViewController = window!.rootViewController as! UISplitViewController
    let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
    navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem
    
    // 반투명 배경을 primary 뷰 컨트롤러에 적용합니다.
    splitViewController.primaryBackgroundStyle = .sidebar
    
    splitViewController.delegate = self
    
    return true
}

뷰에서 포인터 감지

맥 사용자는 텍스트 필드를 선택하거나 창을 옮기는 등 앱과 상호작용하기 위해서 포인터에 의존합니다. 사용자가 포인터를 UI 요소들 위로 움직일때 몇몇 요소들은 모습을 바꿉니다. 예를 들어, 웹 브라우저에서 포인터가 링크위에 올라가면 링크는 하이라이트됩니다.

포인터가 버튼 위를 움직일 때 버튼의 기본 색상을 빨간색으로 바꾸는 예시

class ViewController: UIViewController {


    @IBOutlet var button: UIButton!


    override func viewDidLoad() {
        super.viewDidLoad()


        let hover = UIHoverGestureRecognizer(target: self, action: #selector(hovering(_:)))
        button.addGestureRecognizer(hover)
    }


    @objc
    func hovering(_ recognizer: UIHoverGestureRecognizer) {
        switch recognizer.state {
        case .began, .changed:
            button.titleLabel?.textColor = #colorLiteral(red: 1, green: 0, blue: 0, alpha: 1)
        case .ended:
            button.titleLabel?.textColor = UIColor.link
        default:
            break
        }
    }
}

같이 보기

App Support

  • 맥 앱의 User Interface Idiom 선택 Mac Catalyst로 만들어진 Mac 앱에서 iPad UI Idiom과 Mac UI Idiom 중에 하나를 선택하세요

맥 버전의 앱은 기본적으로 표준 메뉴바를 제공합니다. 를 사용해서 메뉴를 추가하거나 삭제하는 등의 커스텀이 가능합니다. 더 알고 싶으시면 문서를 읽어보세요.

맥 앱은 일반적으로 설정창을 통해 사용자가 앱 설정을 바꿀 수 있게 해줍니다. 유저는 메뉴바의 환경설정 항목을 클릭해서 이 창을 볼수 있습니다. 여러분의 앱이 Settings 번들을 가지고 있다면 시스템이 알아서 환경설정 창을 제공할 것입니다. 더 알고 싶으시면 문서를 읽어보세요.

스플릿 뷰 컨트롤러를 사용하는 아이패드 앱은 macOS에서 맥 스타일의 스플릿 뷰를 사용할 수 있습니다. 그러나 아이패드 앱을 더 맥 앱처럼 만드려면 데스크탑 배경을 블러처리하여 Primary 뷰 컨트롤러의 배경으로 사용하는 반투명 효과를 사용해보세요. 적용하려면 스플릿 뷰 컨트롤러의 을 로 설정하면 됩니다.

사용자가 앱 내 뷰에서 포인터를 움직이는 것을 감지하기 위해서는 해당 뷰에 가 추가되어야 합니다. 이 인식기는 포인터가 뷰에 들어오거나 나갈때, 또는 그 위를 움직이는 동안 앱에게 그 사실을 알려줍니다.

https://developer.apple.com/documentation/uikit/mac_catalyst/optimizing_your_ipad_app_for_mac
AppKit
NSToolbar
NSTouchBar
UIMenuBuilder
메뉴바와 UI에 메뉴 및 단축키 추가
설정창 표시
primaryBackroundStyle
UISplitViewController.BackgroundStyle.sidebar
UIHoverGestureRecognizer