다음을 통해 공유


Xcode를 사용하여 사용자 인터페이스 디자인

Visual Studio 2019 버전 16.8 및 Mac용 Visual Studio 버전 8.8부터 .storyboard 및 .nib 파일을 편집하는 권장 방법은 Mac의 Xcode Interface Builder에서 편집하는 것입니다.

참고 항목

Visual Studio 2019 버전 16.9부터는 Windows에서 iOS 스토리보드를 편집할 수 있는 방법이 지원되지 않습니다. Mac용 Visual Studio 및 Xcode Interface Builder를 사용하여 Xamarin.iOS 사용자 인터페이스를 계속 빌드합니다.

이 문서에서는 Xcode 인터페이스 작성기를 사용하여 사용자 인터페이스를 빌드하는 일반적인 솔루션을 설명합니다. 이 문서는 이전에 Xamarin.iOS 디자이너를 사용하여 UI를 편집한 경우에 특히 유용할 수 있습니다.

스토리보드에 대한 자세한 연습은 Xamarin.iOS의 스토리보드를 참조하세요.

스토리보드를 여는 방법

스토리보드 파일을 마우스 오른쪽 단추로 클릭하고 Xcode 인터페이스 작성기를 선택하여 Mac용 Visual Studio iOS 사용자 인터페이스 파일을 엽니다.

Select Interface Builder

그런 다음 Xcode 창이 열립니다. 여기에 저장된 모든 편집 내용은 Visual Studio 프로젝트에 반영됩니다.

Xcode Window

Xcode Interface Builder에 대한 자세한 내용은 인터페이스 작성기 기본 제공을 참조 하세요.

새 컨트롤 만들기

Xcode 인터페이스 작성기를 사용하여 새 컨트롤을 만들려면 먼저 편집할 스토리보드를 선택합니다. 그런 다음 Xcode 라이브러리 대화 상자(라이브러리 보기>)를 열고 컨트롤을 스토리보드로 끕니다.

Library Picker

다음으로, 해당 뷰 컨트롤러 헤더 파일을 엽니다. 빈 "단일 보기" Xamarin.iOS 앱의 경우 기본 스토리보드를 Main.storyboard라고 합니다. 해당 뷰 컨트롤러 파일은 Xcode에서 볼 때 해당 ViewController.h 헤더 파일을 사용하여 Visual Studio에서 ViewController.cs 호출됩니다.

Xcode 인터페이스 작성기에서 스토리보드와 해당 뷰 컨트롤러 헤더 파일을 모두 엽니다. 컨트롤 키(^)를 누른 상태에서 Xcode에서 대화 상자를 표시할 때까지 스토리보드에서 보기 컨트롤러 파일로 컨트롤을 끕니다.

Demo Link Control

위에서 설명한 것처럼 해당 C# 코드는 뷰 컨트롤러의 코드 숨김 파일에 자동으로 생성됩니다. 이제 Xamarin.iOS 프로젝트 내에서 이 컨트롤에 액세스할 수 있습니다.

기존 컨트롤의 이름 편집

Xcode Interface Builder에서 기존 컨트롤의 이름을 편집하고 해당 변경 내용을 C# 프로젝트로 다시 반영하려면 적절한 뷰 컨트롤러 헤더 파일인 오른쪽 틱으로 이동하고 리팩터링을 선택합니다.

Refactor Control

코드 숨김 파일이 새 이름으로 다시 생성되므로 Mac용 Visual Studio 코드를 통해 컨트롤에 액세스할 수 있습니다.

알려진 문제

이 섹션에서는 알려진 문제에 대해 설명합니다.

"Visual Studio에서 Xcode와 통신할 수 없습니다."

macOS Catalina 이상에서는 아래 오류가 발생할 수 있습니다.

cant communicate err

먼저 보안 및 개인 정보 자동화 >아래 Mac의 시스템 기본 설정에서 Visual Studio가 나열되고 Xcode가 검사.

macOS security

Xcode가 검사 오류 메시지가 계속 표시되는 경우 Mac용 Visual Studio 개인 정보 권한을 다시 설정해야 할 수 있습니다.

터미널 창을 시작하고 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.

sudo tccutil reset All "com.microsoft.visual-studio"

위의 변경 내용이 적용되도록 하려면 Mac의 PRAM을 다시 설정합니다. 자세한 내용은 Mac에서 NVRAM 또는 PRAM 다시 설정을 참조하세요.