2017-01-13 5 views
2

성능는 코어 애니메이션 완전히 사용자 지정 애니메이션을 수행 -

https://www.objc.io/issues/12-animations/animating-custom-layer-properties/

이는 코어 애니메이션 완전히 사용자 지정 애니메이션을하는 것에 대해 말을하는 기사를 :

가정 대신 우리의 시계 얼굴을 구현하는 개별 레이어를 사용하여 Core Graphics를 사용하여 시계를 그려야했습니다. (일반적으로 이것은 의 열등한 성능 인이 될 것입니다. 그러나 일반적인 레이어 속성과 변형을 사용하여 복제하기 어려운 구현할 수있는 복잡한 그리기 작업이 있다고 상상할 수 있습니다.) 어떻게 할 것입니까? 우리의 애니메이션이 내장의 CALayer 기능 만 수행하기에 너무 복잡하기 때문에 즉

, 우리는 수동으로 CG를 사용하여 CA의 각 프레임을 그립니다.

질문은 에 관한 것입니다..

  1. CG는 CPU에서 실행되기 때문에 메인 스레드를 차단할 위험이 있습니까?
  2. CA 대신 SpriteKit을 사용하는 이유가 될 수 있습니까? (SpriteKit는 GPU에서 실행되고 메인 스레드를 차단하지 않으므로)?
+1

"내가 시간이 더 있으면 적게 쓸 것"이라는 옛말을 들었습니까? 나는 이것을 보았으며 간단하고 우아하고 간결한 방식으로 모든 것을 설명 할 시간이 필요합니다. 나는이 과정을 이해하지만, 프레임 워크를 선택하는 것은 진지한 일이며 숨겨 지거나 가려져서는 안된다. Apple은 이러한 것들이 작업, 재능 및 해결 방법의 계층에 어떻게 배치되어 있는지 설명하는 어려운 작업을 수행합니다 ... 내 말은 ... 이것들은 고유 한 프레임 워크이며 단 한 명의 문서 작성자가 자신의 응집력에 대해 아무것도 쓰지 않고 간신히 갈등. – Confused

+1

각 프레임 워크 (및 그 부분 및 부분)가 고유하게 재능을 갖추고 다른 부분, 조각 및 전체에 다소 보완 적이기 때문에 이것은 큰 수치입니다. 당연히이 모든 것은 프로젝트의 모든 부분과 전체 프로젝트의 활동 목표에 따라 달라집니다. 그러나 이것들은 결정을 내릴 수 있고 의사 결정 과정은 투명 할 수 있습니다. 플러스 ... 이들은 진도를 결정하기 전에 고도의 정보, 정당한, 합리적이고 합리적인 방법으로 알기 쉽고 자신감있게 할 수 있어야한다는 정말 큰 결정입니다. – Confused

+1

그래서 ... 나에게 약간의 정보를 주면, (희망을 갖고) 지혜가 아니라면 약간의 통찰력을 얻는다. – Confused

답변

6
  1. 예. 예. 첫 번째 질문. Core Graphics (Quartz 또는 CG)로 그리기는 CPU에 의존하며 앱의 모든 측면을 대폭적으로 느리게 할 것입니다. 준비, 그림, 합성 및 프리젠 테이션이 프레임 시간으로 진행되면 앱이 눈에 띄게 스톨되어 프레임 속도가 그림 그리기. 이것이 1 초당 1 프레임 미만이라 할지라도.

큰 PDF를 출력 할 때 표시됩니다. Core Graphics는 다른 모든 활동보다 비용이 많이 들지만 다른 모든 요소보다 출력 품질을 선호합니다. 부분적으로 그 기원은 품질이 주요 목표 인 인쇄 된 출력물을 목표로하는 PostScript이기 때문에 또한 애니메이션이 아닌 이미지 생성을위한 품질 중심의 프레임 워크로 남아 있기 때문입니다.

는 CA 대 SpriteKit가 서로 다른 우선 순위를 이해 훨씬 더 미묘한 CG 대 SpriteKit/CA에 비해 인수

이며, 이러한 프레임 워크의 기능과 성능 특성이 최선의 방법을 알 수

    1. 그들을 함께 사용하고 독점으로 그들을 언제 선택할 것인가.

      CA 및 CG의 경우 이름 지정 규칙은 종속성 및 상호 운용성을 전달하지만 반드시 필요한 것은 아니며 필요하거나 그럴 수는 없습니다. 그러나 효과적으로 이름을 붙일 수는 있습니다. 그들은 약간 다른 일을하기 때문에 균형 잡힌 행동 일뿐입니다.

      CG = 코어 그래픽

      CA = 코어 애니메이션

      코어 애니메이션은 주석에 말씀입니다 : 일을 애니메이션에 아주 좋아.그러나 또한 독창적 인 창조적 인 콘텐츠 제작 도구를 가지고 있습니다. 너를 놀래 킬지도 모르는 것들은 많이 쓰이는 틀이 아니기 때문이다. 주요 기능 중 상당수는 UIKit 래퍼에서 사용하지 못합니다.

      링크 된 기사는 코어 애니메이션의 콘텐츠 제작 도구에 대한 논의를 완전히 피했습니다.이 도구는 하프 베이크되지 않았으며 아주 훌륭합니다. 특히 애니메이션 프레임 워크의 경우. 더 느린 코어 그래픽 드로잉을 사용하지 않고도 Core Animation에서 필요한 모든 구성 요소와 완벽한 시계 애니메이션을 만들 수 있습니다. 이 기사가 왜 이러한 기능을 설명하지 않는지 나는 잘 모르겠습니다.

      코어 애니메이션 콘텐츠 제작 층에

      , 여기에 두 가지이다 :

      CAShapeLayer을하고 어떤 모양이나 형태의 조합의 도면에 애니메이션을 적용 할 수 있습니다. CATextLayer은 NSAttributedString과 모든 속성을 완벽하게 지원하고 애니메이션도 지원합니다.

      Core Animation은 Flash 및 QuickTime에서 영감을 얻은 폐쇄 형 소스 플랫폼 고유의 API와 같이 매우 뛰어난 애니메이션 및 시각적 상호 작용 작성을 위해 처음부터 생각해보십시오.

      • 그림 및 콘텐츠 제작 프레임 워크 인 CALayers에는 Core Graphics의 모든 기능이 없습니다. 그러나 SpriteKit의 방식에는 제한이 없습니다.

      • 애니메이션 및 상호 작용 프레임 워크로서 Core Animation은 SpriteKit에 포함 된 특정 추가 기능이없는 Sprite Kit보다 더 뛰어난 그래픽, 애니메이션 및 이벤트 기반 게임 엔진입니다.

      CALayers는 단순한 것이 아닙니다. 그들은 내용을 그릴 수 있고 그것을 마스킹 할 수도 있습니다. 그리고 나서 원근감 왜곡으로 완성되는 의사 3D 회전 공간을 포함하여 모든면에서 훌륭한 애니메이션 방식으로 고도의 애니메이션을 제작합니다. 하지만 SpriteKit에서 코어 애니메이션에서 누락

      은 다음과 같습니다

      1. 사운드 : SK에서 사운드를 재생하는 두 가지 방법, CA에서 아무도 자신의
      2. 게임 루프 롤링하지 않고있다 : SK가 최적화 동안 이벤트, 주변에 건설 된 게임 루프도 있습니다
      3. 물리학 : 물리 효과를 얻으려면 핵심 애니메이션 레이어와 함께 UIKit 다이내믹을 사용해야합니다.
      4. 이미지 패킹 : 텍스처, 그리고 그들의 포장 풀기
      5. 시각적 장면 편집기 : 거의 손실이별로 없습니다. 디자이너의 관점에서 말한 것
      6. 시각적 입자 편집기 : 이것은 더 많은 손실입니다.세게 한
      7. SKActions없이 좋은 효과를 만들려면 : 그러나 CA는 암시 적/명시 적 애니메이션 및/또는 CAKeyFrameAnimation 사용 SpriteKit의

      특별 네거티브 모두 있습니다

      1. 가 잘 재생되지 않음을 UIKit과 멋진 레이아웃 기능을 원할 때
      2. 최소한의 (겉으로보기에) 리소스와 버그 테스트가 주어 졌기 때문에 특이한 버그
      3. V 애플에서 언급 대부분 사소한 Q &지지
      4. 거의없는 지원의 작은 수영장을 제공하는 사용자의 ERY 작은 지역 사회는 그들의 포럼은 슬픔의 황무지입니다
      5. 문서는 대부분 날짜 및/또는 의미에서, 한심한입니다 워크 플로우, 패러다임과 프로세스를 이해하는 게임 엔진
      6. 에 대한 예제와 일반적인 시위의 무수한
      7. 없음
      8. 장면 편집기, 느린 잘못 설계, 영양 실조 및
      9. 엑스 코드에 제대로 맞는 삼투를 통해 배운 적이있다 엔

        관련 트위스트와 함께 코어 그래픽 역사의

        빠른 정리 해보 ...

        : O 라벨 및 기타 텍스트 표현을위한 NSAttributedString은 지원 내가 두 번째 부분에 대한 답을 추가 한 번 삭제됩니다

      일부 역사 시시한 이야기를 필요로

      포스트 스크립트는 맥용 데스크톱 출판에 크게 책임을지고 맥은 디자인 및 창의력 컴퓨팅 시장의 새롭고 급성장 한 틈새 시장에서 성공을 거두었습니다. 이 시장은 IBM/Intel/Microsoft가 비용 및 호환성을 의식한 '생산성'및 기업 시장을 공격하는 동안 Apple을 계속 유지했습니다. 디지털 광고 소재는 지금 좌절하고, 명예를 인정에 대한 관심 또는 현대 데스크탑 창의성의 용량과 속도를 유지하지 못하는 동안 아이폰 현금 젖소를 착유를위한 팀 쿡의 애플과 분노입니다. *

      일부 다른 드리블 고려 프레임 워크 선택시 :

      소비자 및 창작 컴퓨팅 내역 중 가장 큰 현금 보유자는 창의성을위한 도구를 만드는 데 혁신을 보이지 않습니다. 애플의 핵심 가치/전통과 열악한 수십 년 동안 애플 중심의 창조적 도구를 배우고 사용하려는 사람들의 열정과 열정 모두를 배반 한 것처럼 느껴진다. 아이폰과 아이 패드로 이어질 아이팟의 기대와 채택을 제공하면서, "차가운"창의력이 애플을 "멋지게"만드는 데 도움이되는 것은 당연한 일이다.

      아이폰에 대한 현혹과 은총없는 현금 집중 때문에 브랜드의 광택이 확실히 떨어지고있다. 이것은 이러한 유형의 의사 결정에 영향을주는 간단한 이유 중 하나 인 SpriteKit의 사용이 최소화되었음을 염려합니다. 새로운 애플의 모든 다른 동기를 이윤으로 삼고있는 것처럼, 애플은 이미 경량의 개발 팀에게 더 큰 이익을주기 위해 비용 절감을 결정할 수있다. 프레임 워크 및 소프트웨어 개발 리소스의 혁신에 iPhone이 이익을 올리는 것에 비하면 비례합니다.

      애플은 필요성을 이해할 수있는 흔적을 보이지 않으며, 새로운 프레임 워크를 가능하거나 안정적으로 만들기 위해 적극적으로 열정적으로 투자하기를 원하지 않습니다. 유효성을 확인하고 따라서 새로운 프레임 워크로 개발자를 끌어 들이기 위해서는 Apple이 내키지 않는 투명한 노력이 필요합니다. Apple은 새로운 프레임 워크를 배우고, 채택하고 사용하기 위해 예상되는 시간과 노력을 무시하고 경멸하는 것처럼 보입니다. 그리고 완전히 기대에 찬성하는 개발자들은 애플을 채택하는 위험을 무릅 쓰고 이익을 추구하면서 폐쇄 될 수 있습니다.

      스프라이트 키트와 장면 키트는 오래 전에 임신 기간이 길어졌으며 이전 출시 버전에서는 여러 가지 버그가있었습니다. 끔찍하게 가난한 개발자 커뮤니케이션과 코더 신뢰 및 채택의 성장에 대한 명백한 보살핌의 결여와 함께 이로 인해 진정한 빈약 한 채택률이 발생합니다.

      강하게 채택하지 않으면 애플은 SpriteKit을 떨어 뜨리기로 결정할 수 있습니다.

      cocos2D-X가 계속 성공을 거둔 이유는 애플이 SpriteKit을 만들 수 없었던 직접적인 결과라고 할 수 있습니다. 시의 적절하고 사려 깊은 방식으로 문제를 지원, 전달, 관리 및 업데이트하지 못하면 SpriteKit을 사용하지 않으려 고하는 바람과 함께 개발자의 불확실성과 불안감이 커졌습니다.

      개발 인력에 대한 예산이 거의 제한되어 있기 때문에 이러한 종류의 일은 애플의 당혹감과 비판의 근원이되어야하며 다른 "이니셔티브"에 대한 철저한 조사와 "혁신"으로 넘쳐나 야합니다. 이해할 수없는 이유 때문에 애플이하는 일과하지 않는 것에 대해 비판적인 생각을하는 것은 아닙니다. 또한 선택에 미친 영향과 영향에 대해서도 비판적으로 생각하는 것이 아닙니다.

      사내 소프트웨어 개발자를 고용하고 소프트웨어 출력 품질을 높이는 것이 하드웨어 판매, 앱 스토어 수익, 도달 범위 및 시장 영향 측면에서 iOS 플랫폼의 성장과 거의 일치하지 않는다고 생각합니다. 이것은 곧 Sprite Kit의 마른 사용자 기반과 존재하지 않는 SceneKit 사용에 가까운 결과를 가져옵니다.

  • +0

    흥미로운 생각. 어떤 것도 삭제하지 마십시오. 파트 2를 추가 한 후에도 그대로 두십시오. 이것은 매우 높이 평가됩니다! –

    +1

    @ code-ninja-54321 업데이트가 추가되었습니다 ... – Confused

    +0

    아름다운 답변입니다. 고맙습니다. 나는 이제 CA가 마스터 링의 가치가 있음을 확신합니다. –

    관련 문제