iOS 7 소개

이 문서에서는 보기 컨트롤러 전환, UIView 애니메이션에 대한 향상된 기능, UIKit Dynamics 및 텍스트 키트를 포함하여 iOS 7에 도입된 주요 새 API에 대해 설명합니다. 또한 사용자 인터페이스에 대한 일부 변경 내용과 새로운 마법에 걸린 멀티태스킹 기능도 다룹니다.

iOS 7은 iOS의 주요 업데이트입니다. 애플리케이션 크롬이 아닌 콘텐츠에 초점을 맞추는 완전히 새로운 사용자 인터페이스 디자인을 도입했습니다. 시각적 변경 내용과 함께 iOS 7은 다양한 새 API를 추가하여 보다 풍부한 상호 작용과 환경을 만듭니다. 이 문서에서는 iOS 7에서 도입된 새로운 기술을 조사하며 추가 탐색을 위한 출발점 역할을 합니다.

UIView 애니메이션 향상

iOS 7은 UIKit에서 애니메이션 지원을 보강하여 애플리케이션이 이전에 핵심 애니메이션 프레임워크에 직접 삭제해야 하는 작업을 수행할 수 있도록 합니다. 예를 들어 UIView 이제 이전에 적용CALayer되었던 CAKeyframeAnimation 키 프레임 애니메이션뿐만 아니라 스프링 애니메이션도 수행할 수 있습니다.

Spring 애니메이션

UIView 이제 스프링 효과를 사용하여 속성 변경 내용에 애니메이션 효과를 적용할 수 있습니다. 이를 추가하려면 아래에 설명된 대로 스프링 감쇠 비율 및 초기 스프링 속도 값을 전달하여 메서드 또는 AnimateNotifyAsync 메서드를 호출 AnimateNotify 합니다.

  • springWithDampingRatio – 0에서 1 사이의 값으로, 더 작은 값에 대해 진동이 증가합니다.
  • initialSpringVelocity – 초기 스프링 속도(초당 총 애니메이션 거리 백분율)입니다.

다음 코드는 이미지 보기의 중심이 변경되면 스프링 효과를 생성합니다.

void AnimateWithSpring ()
{
    float springDampingRatio = 0.25f;
    float initialSpringVelocity = 1.0f;

    UIView.AnimateNotify (3.0, 0.0, springDampingRatio, initialSpringVelocity, 0, () => {

        imageView.Center = new CGPoint (imageView.Center.X, 400);

    }, null);
}

이 봄 효과로 인해 아래 그림과 같이 이미지 보기가 새 가운데 위치로 애니메이션을 완료할 때 반송되는 것처럼 표시됩니다.

This spring effect causes the image view to appear to bounce as it completes its animation to a new center location

키 프레임 애니메이션

이제 클래스에는 UIView 키 프레임 애니메이션을 만드는 메서드가 UIView포함 AnimateWithKeyframes 됩니다. 이 메서드는 추가 키 프레임을 포함 하는 매개 변수로 전달 되는 NSAction 것을 제외 하 고 다른 UIView 애니메이션 메서드와 비슷합니다. 내에서 NSAction키 프레임은 호출 UIView.AddKeyframeWithRelativeStartTime하여 추가됩니다.

예를 들어 다음 코드 조각은 보기의 중심에 애니메이션을 적용하고 보기를 회전하는 키 프레임 애니메이션을 만듭니다.

void AnimateViewWithKeyframes ()
{
    var initialTransform = imageView.Transform;
    var initialCeneter = imageView.Center;

    // can now use keyframes directly on UIView without needing to drop directly into Core Animation

    UIView.AnimateKeyframes (2.0, 0, UIViewKeyframeAnimationOptions.Autoreverse, () => {
        UIView.AddKeyframeWithRelativeStartTime (0.0, 0.5, () => {
            imageView.Center = new CGPoint (200, 200);
        });

        UIView.AddKeyframeWithRelativeStartTime (0.5, 0.5, () => {
            imageView.Transform = CGAffineTransform.MakeRotation ((float)Math.PI / 2);
        });
    }, (finished) => {
        imageView.Center = initialCeneter;
        imageView.Transform = initialTransform;

        AnimateWithSpring ();
    });
}

메서드의 AddKeyframeWithRelativeStartTime 처음 두 매개 변수는 키 프레임의 시작 시간과 기간을 각각 전체 애니메이션 길이의 백분율로 지정합니다. 위의 예제에서는 이미지 뷰가 첫 번째 1초 동안 새 가운데에 애니메이션 효과를 주는 다음, 그 다음 초 동안 90도 회전합니다. 애니메이션이 옵션으로 지정 UIViewKeyframeAnimationOptions.Autoreverse 되므로 두 키 프레임 모두 역방향으로 애니메이션 효과를 줍니다. 마지막으로 최종 값은 완료 처리기의 초기 상태로 설정됩니다.

아래 스크린샷은 키 프레임을 통해 결합된 애니메이션을 보여 줍니다.

This screenshots illustrates the combined animation through the keyframes

UIKit Dynamics

UIKit Dynamics는 애플리케이션이 물리학에 따라 애니메이션 조작을 만들 수 있도록 하는 UIKit의 새로운 API 집합입니다. UIKit Dynamics는 2D 물리학 엔진을 캡슐화하여 이를 가능하게 합니다.

API는 본질적으로 선언적입니다. 중력, 충돌, 스프링 등과 같은 물리학 개념을 표현하기 위해 동작이라고 하는 개체를 만들어 물리학 상호 작용이 작동하는 방식을 선언합니다. 그런 다음 보기를 캡슐화하는 동적 애니메이터라는 다른 개체에 동작을 연결합니다. 동적 애니메이터는 선언된 물리학 동작을 동적 항목(예: UIView구현IUIDynamicItem하는 항목)에 적용하는 작업을 처리합니다.

다음을 포함하여 복잡한 상호 작용을 트리거하는 데 사용할 수 있는 몇 가지 기본 동작이 있습니다.

  • UIAttachmentBehavior – 함께 이동하거나 동적 항목을 첨부 지점에 연결하도록 두 개의 동적 항목을 연결합니다.
  • UICollisionBehavior – 동적 항목이 충돌에 참여할 수 있도록 허용합니다.
  • UIDynamicItemBehavior – 탄력성, 밀도 및 마찰과 같은 동적 항목에 적용할 일반 속성 집합을 지정합니다.
  • UIGravityBehavior - 동적 항목에 중력을 적용하여 항목이 중력 방향으로 가속되도록 합니다.
  • UIPushBehavior – 동적 항목에 강제 적용합니다.
  • UISnapBehavior – 동적 항목이 스프링 효과를 사용하여 위치에 맞춰지도록 허용합니다.

많은 기본 형식이 있지만 UIKit Dynamics를 사용하여 뷰에 물리학 기반 상호 작용을 추가하는 일반적인 프로세스는 동작 간에 일관됩니다.

  1. 동적 애니메이터를 만듭니다.
  2. 동작을 만듭니다.
  3. 동적 애니메이터에 동작을 추가합니다.

Dynamics 예제

중력과 충돌 경계 UIView를 추가하는 예제를 살펴보겠습니다.

UIGravityBehavior

이미지 뷰에 중력을 추가하면 위에 설명된 3단계를 따릅니다.

이 예제의 메서드에서 ViewDidLoad 작업하겠습니다. 먼저 다음과 같이 인스턴스를 UIImageView 추가합니다.

image = UIImage.FromFile ("monkeys.jpg");

imageView = new UIImageView (new CGRect (new CGPoint (View.Center.X - image.Size.Width / 2, 0), image.Size)) {
                    Image =  image
                }

View.AddSubview (imageView);

그러면 화면 위쪽 가장자리를 중심으로 이미지 보기가 만들어집니다. 이미지를 중력으로 "fall"으로 만들려면 다음 인스턴스를 만듭니다 UIDynamicAnimator.

dynAnimator = new UIDynamicAnimator (this.View);

UIDynamicAnimator 연결된 동작에 따라 애니메이션 효과를 줄 항목을 포함하는 참조 UIView 또는 UICollectionViewLayouta의 인스턴스를 사용합니다.

다음으로 인스턴스를 만듭니다 UIGravityBehavior . 다음과 같이 구현하는 하나 이상의 개체를 IUIDynamicItem전달할 수 있습니다 UIView.

var gravity = new UIGravityBehavior (dynItems);

이 동작은 애니메이션 효과를 주는 단일 UIImageView 인스턴스를 포함하는 배열IUIDynamicItem로 전달됩니다.

마지막으로 동적 애니메이터에 동작을 추가합니다.

dynAnimator.AddBehavior (gravity);

이렇게 하면 아래 그림과 같이 이미지가 중력으로 아래쪽으로 애니메이션 효과를 봅니다.

The starting image locationThe ending image location

화면의 경계를 제한하는 것은 없으므로 이미지 보기는 단순히 아래쪽에서 떨어집니다. 이미지가 화면 UICollisionBehavior가장자리와 충돌하도록 보기를 제한하기 위해 . 이 내용은 다음 섹션에서 설명합니다.

UICollisionBehavior

먼저 동적 애니메이터를 UIGravityBehavior만들고 UICollisionBehavior 추가합니다.

다음을 포함하도록 코드를 수정합니다 UICollisionBehavior.

using (image = UIImage.FromFile ("monkeys.jpg")) {

    imageView = new UIImageView (new CGRect (new CGPoint (View.Center.X - image.Size.Width / 2, 0), image.Size)) {
        Image =  image
    };

    View.AddSubview (imageView);

    // 1. create the dynamic animator
    dynAnimator = new UIDynamicAnimator (this.View);

    // 2. create behavior(s)
    var gravity = new UIGravityBehavior (imageView);
    var collision = new UICollisionBehavior (imageView) {
        TranslatesReferenceBoundsIntoBoundary = true
    };

    // 3. add behaviors(s) to the dynamic animator
    dynAnimator.AddBehaviors (gravity, collision);
}

UICollisionBehavior 속성에는 .라는 속성이 있습니다 TranslatesReferenceBoundsIntoBoundry. 이를 설정하면 true 참조 뷰의 경계가 충돌 경계로 사용됩니다.

이제 이미지가 중력으로 아래쪽으로 애니메이션 효과를 주면 화면 아래쪽에서 약간 튀어 나와 휴식을 취합니다.

UIDynamicItemBehavior

추가 동작을 사용하여 떨어지는 이미지 뷰의 동작을 추가로 제어할 수 있습니다. 예를 들어 UIDynamicItemBehavior 탄력성을 높이기 위해 추가하면 이미지 보기가 화면 아래쪽과 충돌할 때 더 많이 튀게 됩니다.

추가는 UIDynamicItemBehavior 다른 동작과 동일한 단계를 따릅니다. 먼저 동작을 만듭니다.

var dynBehavior = new UIDynamicItemBehavior (dynItems) {
    Elasticity = 0.7f
};

그런 다음 동적 애니메이터에 동작을 추가합니다.

dynAnimator.AddBehavior (dynBehavior);

이 동작을 사용하면 이미지 뷰가 경계와 충돌할 때 더 많이 바운스됩니다.

일반 사용자 인터페이스 변경 내용

iOS 7은 위에서 설명한 UIKit Dynamics, 컨트롤러 전환 및 향상된 UIView 애니메이션과 같은 새로운 UIKit API 외에도 다양한 UI에 대한 다양한 시각적 변경 내용과 다양한 보기 및 컨트롤에 대한 관련 API 변경 내용을 도입합니다. 자세한 내용은 iOS 7 사용자 인터페이스 개요를 참조 하세요.

텍스트 키트

텍스트 키트는 강력한 텍스트 레이아웃 및 렌더링 기능을 제공하는 새로운 API입니다. 낮은 수준의 Core Text 프레임워크를 기반으로 빌드되지만 Core Text보다 사용하기가 훨씬 쉽습니다.

자세한 내용은 TextKit을 참조하세요 .

멀티태스킹

iOS 7은 백그라운드 작업이 수행되는 시기와 방법이 변경됩니다. iOS 7의 작업 완료는 작업이 백그라운드에서 실행될 때 애플리케이션을 더 이상 깨우지 않으며 애플리케이션은 연속되지 않는 방식으로 백그라운드 처리를 위해 해제됩니다. 또한 iOS 7은 백그라운드에서 새 콘텐츠로 애플리케이션을 업데이트하기 위한 세 가지 새 API를 추가합니다.

  • 백그라운드 인출 – 애플리케이션에서 정기적으로 백그라운드에서 콘텐츠를 업데이트할 수 있습니다.
  • 원격 알림 - 푸시 알림을 받을 때 애플리케이션에서 콘텐츠를 업데이트할 수 있습니다. 알림은 자동이거나 잠금 화면에 배너를 표시할 수 있습니다.
  • 백그라운드 전송 서비스 – 고정된 시간 제한 없이 대용량 파일과 같은 데이터를 업로드하고 다운로드할 수 있습니다.

새로운 멀티태스킹 기능에 대한 자세한 내용은 Xamarin 백그라운드 가이드의 iOS 섹션을 참조하세요.

요약

이 문서에서는 iOS에 대한 몇 가지 주요 새로운 추가 사항에 대해 설명합니다. 먼저 뷰 컨트롤러에 사용자 지정 전환을 추가하는 방법을 보여 줍니다. 그런 다음, 탐색 컨트롤러 내에서뿐만 아니라 컬렉션 뷰 간에 대화형으로 컬렉션 보기에서 전환을 사용하는 방법을 보여 줍니다. 다음으로, UIView 애니메이션에 대한 몇 가지 향상된 기능을 도입하여 애플리케이션이 이전에 코어 애니메이션에 직접 프로그래밍해야 하는 항목에 UIKit을 사용하는 방법을 보여 줍니다. 마지막으로, UIKit에 물리학 엔진을 제공하는 새로운 UIKit Dynamics API가 이제 Text Kit 프레임워크에서 사용할 수 있는 풍부한 텍스트 지원과 함께 도입되었습니다.