iOS 6 소개
iOS 6에는 Xamarin.iOS 6이 C# 개발자에게 제공하는 앱을 개발하기 위한 다양한 새로운 기술이 포함되어 있습니다.
iOS 6 및 Xamarin.iOS 6을 사용하는 개발자는 이제 iPhone 5를 대상으로 하는 애플리케이션을 포함하여 iOS 애플리케이션을 만들 수 있는 풍부한 기능을 갖추고 있습니다. 이 문서에는 사용할 수 있는 몇 가지 흥미로운 새로운 기능과 각 항목에 대한 문서에 대한 링크가 나열되어 있습니다. 또한 개발자가 iOS 6 및 iPhone 5의 새로운 해상도로 이동할 때 중요한 몇 가지 변경 사항을 다룹니다.
컬렉션 뷰 소개
컬렉션 뷰를 사용하면 임의의 레이아웃을 사용하여 콘텐츠를 표시할 수 있습니다. 사용자 지정 레이아웃도 지원하면서 그리드와 유사한 레이아웃을 쉽게 만들 수 있습니다. 자세한 내용은 컬렉션 뷰 소개 가이드를 참조 하세요 .
PassKit 소개
PassKit 프레임워크를 사용하면 애플리케이션이 Passbook 앱에서 관리되는 디지털 패스와 상호 작용할 수 있습니다. 자세한 내용은 통과 키트 소개 가이드를 참조 하세요.
EventKit 소개
EventKit 프레임워크는 일정 데이터베이스가 저장하는 일정, 일정 이벤트 및 미리 알림 데이터에 액세스하는 방법을 제공합니다. 일정 및 일정 이벤트에 대한 액세스는 iOS 4부터 사용할 수 있지만 iOS 6은 이제 미리 알림 데이터에 대한 액세스를 노출합니다. 자세한 내용은 EventKit에 대한 I ntroduction 가이드를 참조하세요.
소셜 프레임워크 소개
소셜 프레임워크는 Twitter 및 Facebook을 비롯한 소셜 네트워크와 상호 작용하기 위한 통합 API뿐만 아니라 중국 사용자를 위한 SinaWeibo를 제공합니다. 자세한 내용은 소셜 프레임워크 소개 가이드를 참조하세요.
StoreKit 변경 내용
Apple은 스토어 키트에서 앱 내에서 iTunes 또는 App Store 콘텐츠 구매 및 다운로드, 앱 내 구매를 위한 콘텐츠 파일 호스팅이라는 두 가지 새로운 기능을 도입했습니다. 자세한 내용은 스토어 키트 변경 가이드를 참조하세요.
기타 변경 내용
ViewWillUnload 및 ViewDidUnload 사용되지 않음
ViewDidUnload
및 메서드 UIViewController
는 ViewWillUnload
더 이상 iOS 6에서 호출되지 않습니다. 이전 버전의 iOS에서 이러한 메서드는 뷰가 언로드되기 전에 상태를 저장하고 코드를 정리하는 데 애플리케이션에서 사용되었을 수 있습니다.
예를 들어 Mac용 Visual Studio 아래와 같이 다음과 같은 ReleaseDesignerOutlets
메서드를 만들어 다음에서 ViewDidUnload
호출합니다.
void ReleaseDesignerOutlets ()
{
if (myOutlet != null) {
myOutlet.Dispose ();
myOutlet = null;
}
}
그러나 iOS 6에서는 더 이상 호출 ReleaseDesignerOutlets
할 필요가 없습니다.
정리 코드의 경우 iOS 6 애플리케이션에서 .를 사용해야 DidReceiveMemoryWarning
합니다. 그러나 호출 Dispose
하는 코드는 아래와 같이 메모리 집약적 개체에만 사용해야 합니다.
if (myImageView != null){
if (myImageView.Superview == null){
myImageView.Dispose();
myImageView = null;
}
}
다시 말하지만, 위와 같이 호출 Dispose
하는 것은 거의 필요하지 않습니다. 일반적으로 대부분의 애플리케이션은 이벤트 처리기를 제거하는 것입니다.
상태를 저장하는 경우 애플리케이션은 이 ViewWillDisappear
작업을 수행할 수 있습니다 ViewDidDisappear
ViewWillUnload
.
iPhone 5 해상도
iPhone 5 디바이스에는 640x1136 해상도가 있습니다. 이전 버전의 iOS를 대상으로 한 애플리케이션은 아래와 같이 iPhone 5에서 실행될 때 letterboxed로 표시됩니다.
애플리케이션이 iPhone 5에서 전체 화면으로 표시되도록 하려면 해상도가 640x1136인 이미지를 Default-568h@2x.png
추가하기만 하면됩니다. 다음 스크린샷은 이 이미지가 포함된 후 실행되는 애플리케이션을 보여줍니다.
서브클래싱 UINavigationBar
iOS 6 UINavigationBar
에서는 서브클래스할 수 있습니다. 이렇게 하면 모양과 느낌을 추가로 제어할 UINavigationBar
수 있습니다. 예를 들어 애플리케이션은 하위 뷰를 추가하고, 해당 뷰에 애니메이션을 적용하고, 경계를 수정하기 위해 서브클래스를 수행할 수 있습니다 UINavigationBar
.
아래 코드는 다음을 추가하는 서브클래스의 UINavigationBar
예를 보여줍니다.UIImageView
public class CustomNavBar : UINavigationBar
{
UIImageView iv;
public CustomNavBar (IntPtr h) : base(h)
{
iv = new UIImageView (UIImage.FromFile ("monkey.png"));
iv.Frame = new CGRect (75, 0, 30, 39);
}
public override void Draw (RectangleF rect)
{
base.Draw (rect);
TintColor = UIColor.Purple;
AddSubview (iv);
}
}
서브클래스를 UINavigationBar
UINavigationController
추가하려면 아래와 같이 형식을 UIToolbar
사용하는 UINavigationBar
생성자를 사용합니다UINavigationController
.
navController = new UINavigationController (typeof(CustomNavBar), typeof(UIToolbar));
이 UINavigationBar
하위 클래스를 사용하면 다음 스크린샷과 같이 이미지 보기가 표시됩니다.
인터페이스 방향
iOS 6 애플리케이션이 재정 ShouldAutorotateToInterfaceOrientation
의되기 전에 특정 컨트롤러가 지원하는 모든 방향에 대해 true를 반환합니다. 예를 들어 다음 코드는 세로만 지원하는 데 사용됩니다.
public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
{
return (toInterfaceOrientation == UIInterfaceOrientation.Portrait);
}
iOS 6 ShouldAutorotateToInterfaceOrientation
에서는 더 이상 사용되지 않습니다.
대신 애플리케이션은 아래와 같이 루트 뷰 컨트롤러에서 재정 GetSupportedInterfaceOrientations
의할 수 있습니다.
public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
return UIInterfaceOrientationMask.Portrait;
}
iPad에서는 구현되지 않은 경우 GetSupportedInterfaceOrientation
네 가지 방향이 모두 기본값으로 설정됩니다. iPhone 및 iPod Touch에서 기본값은 을 제외한 PortraitUpsideDown
모든 방향입니다.