퓨즈[Fusetools] v1.2.0 릴리즈 노트

퓨즈를 업그레이드 한 후에는 ‘uno clean’을 실행하는걸 잊지 마세요.

하이라이트

  • 엔진의 많은 부분이 더 빨라지고 매끄러워졌습니다!
  • 안정성 및 성능이 크게 향상되었습니다.
  • Each에 Reuse, Identity 및 IdentityKey와 같은 요소들이 확장되어 새로운 유스 케이스와 향상된 성능을 제공합니다 (불필요한 객체 할당이 좋지 않기 때문입니다).
  • UX 표현식은 임의의 배열 조회 및 가변 인수 지원을 통해 더욱 강력해졌습니다.

퓨즈 스튜디오 업데이트

  • Studio가 훨씬 빨라졌고 응답성도 좋아졌습니다. (향후 릴리스에서도 개선될 것입니다.)
  • 메인 메뉴를 사용하여 요소를 제거해도 더 이상 퓨즈가 충돌하지 않습니다.
  • Inspector에서 그라데이션 중지를 추가할 수 있습니다.
  • 메모리 누수 문제 해결
  • 프리미티브 바에 PageControl 및 Page를 추가했습니다.

일반 툴 및 프레임워크 업데이트

Windows 설치 프로그램에 포함된 기본 패키지

  • 베어본 퓨즈 앱에 필요한 모든 패키지가 이제 설치 프로그램에 포함됩니다. 이렇게하면 새 퓨즈 버전을 설치한 후 처음으로 프로젝트를 빌드 할 때 패키지 관리자가 몇 분 정도 기다릴 필요가 없습니다

오프라인에서 툴 사용

  • 퓨즈가 인터넷에 연결되어 있지 않을 때 사용할 수 없다는 버그가 수정되었습니다.

키 이벤트 미리보기

  • 미리보기 뷰포트 내부의 AltGr 키보드 누름이 주 창으로 전송될 때 입력할 수 없다는 버그가 수정되었습니다. 노르딕 키보드의 ‘@’문자.

코드 완성

  • App 태그 내부의 태그에 대한 UX 완성을 수정했습니다. 이전에는 두 번째 레벨 태그 내부에서만 완료되었습니다.

Fuse.Text

  • -DUSE_HARFBUZZ, -DCOCOAPODS 및 특정 포드 (특히 Firebase.Database가 식별 됨)의 조합으로 인해 앱이 AppStore에서 허용하지 않는 심볼에 링크되는 문제가 해결되었습니다.

Each

  • 요소를 제거해도 실제로 요소가 제거되지 않는 문제가 해결되었습니다.

Image

  • <Image />가 iOS에서 <NativeViewHost /> 내에 표시되지 않는 문제 수정

Router

  • UI 내부 깊숙한 페이지에서 라우터를 사용하기 쉽게 만드는 findRouter 함수가 추가되었습니다.
  • 상대 경로와 중첩 된 라우터가 알 수 없는 경로에 대한 오류를 수정하고 해결하는 문제

UX Expression 향상

  • JSON 문자열로 구문 분석된 페이지의 라우팅 매개 변수를 반환하는 매개 변수(page) 함수가 추가되었습니다.
  • UX 표현식은 이제 임의의 배열 조회를 지원합니다. {someArray [index + 3]}. 같은 구문을 문자열 키와 함께 사용할 수도 있습니다 (예 : {someObject [someKey]}). 조회는 완전히 반응합니다. 모음과 키 / 색인이 모두 변경될 수 있습니다.

UX 표현식 (우 레벨)

  • UX 함수에 대한 다양한 인수에 대한 지원이 도입되었습니다. – Fuse.Reactive.VarArgFunction 클래스에서 상속받습니다.
  • Fuse.Reactive의 Vector2, Vector3 및 Vector4 클래스는 이제 제거되어 범용 가변 인수 버전 Vector로 대체되었습니다. 이렇게하면 모든 길이의 벡터가 동일한 방식으로 처리됩니다. Uno 코드에서 이러한 클래스를 명시 적으로 사용 한 경우에는 이전 버전과 호환되지 않습니다.
  • 이름 – 값 쌍 구문에 대한 지원이 추가되었습니다 (name : value). 사용자 정의 함수에서 JSON과 유사한 객체 표기법 및 명명 된 인수에 사용할 수 있습니다.

템플릿(Templates)

  • Each에 Identity 및 IdentityKey를 추가했습니다. 이를 통해 Observable에서 replaceAt 또는 replaceAll로 대체 할 때 생성 된 비주얼을 재사용 할 수 있습니다.
  • 트리거는 이제 활성화 될 때 (노드 자식과 같이) 인스턴스화 되고 부모에 추가되는 템플릿을 사용할 수 있습니다.
  • NodeGroup에 템플릿을 추가했으며 이제 Each.TemplateSource 및 Instance.TemplateSource에서 사용할 수 있습니다.
  • TemplateSource를 사용하는 Each는 더 이상 루팅 후에 템플릿 변경에 응답하지 않습니다. 이는 코드를 단순화하고 대체 소스를 지원하기 위해 수행되었으며 사소한 성능 개선입니다. 코드가 제대로 작동하지 않아 코드에 영향을 미치지 않으며, UX에서 루팅 후 템플릿를 수정할 방법이 없습니다.
  • Instantiator.TemplateSource를 WeakReference로 변경하여 메모리 누수가 수정되었습니다. Uno에서 이 속성에 임시 값을 할당 한 경우에만 이 변경이 코드에 영향을 줍니다.
  • Each/인스턴스가 기본 템플릿을 처리하는 방법에 대한 몇 가지 문제를 명확히 하거나 수정했습니다. 이전에는 일치하는 템플리트가 발견되지 않은 경우 지정된 모든 템플리트 또는 서브셋이 발견되었지만, 실수로 사용되었을 수 있습니다. 이제, MatchKey를 사용하고 기본 템플릿을 갖고 싶다면 기본 템플릿에서 ux:DefaultTemplate=”true”를 지정해야 합니다. 특정 이름의 템플릿을 하나만 가질 수 있는 것처럼 폴백 템플릿을 여러 개 만들 수 없습니다.
  • ux:DefaultTemplate=”true”가 지정되면 사용되는 템플릿이 됩니다. 전체 템플릿 목록은 사용되지 않습니다.

Fuse.Share

  • iPad에서 Fuse.Share를 사용할 때 중단되는 문제가 해결되었습니다. 사용자는 공유 팝업에 대해 스폰 원점 위치를 제공해야 합니다. 자세한 내용은 Fuse.Share 문서를 확인하십시오.
  • iOS 구현을 internal로 만들었습니다. 이것은 처음부터 public이 되는 것을 의미하지 않았습니다.

최적화

  • 히트 테스트 계산 최적화. 깊숙한 트리 구조의 스크롤뷰에서 스크롤을 향상시킵니다.
  • 최적화 된 중복 OpenGL 렌더링 대상 작업. 일부 플랫폼에서는 속도가 향상됩니다.
  • 하위 트리 트래핑을 방지하기 위해 변환에 대한 최적화된 무효화 전략. 이렇게 하면 큰 하위 트리(예: 스크롤뷰)에 애니메이션을 적용 할 때 일반적으로 성능이 향상됩니다.
  • 이전 버전과 호환되지 않는 최적화 변경: 보호된 가상 void Visual.OnInvalidateWorldTransform() 메서드가 제거되었습니다. 이 메소드의 제약은 구현에 매우 비용이 많이 들었습니다. 모든 노드에서 호출해야 했기 때문입니다. 이 메서드에 의존하는 사용자 지정 Uno 코드가 있는 경우 다음과 같이 Visual.WorldTransformInvalidated 이벤트를 명시적으로 구독하려면 다시 작성하십시오. OnRooted를 재정의하고 WorldTransformInvalidated += OnInvalidateWorldTransform을 수행하고 OnUnrooted를 재정의하고 WorldTransformInvalidated -= OnInvalidateWorldTransform으로 재정의하십시오. 다음 정의를 다시 작성하세요. void OnInvalidateWorldTransform() -> void OnInvalidateWorldTransform(object sender, EventArgs args)
  • 렌더링 속도를 향상시키기 위해 일부 성능에 중요한 코드 경로에서 릴리즈 빌드의 OpenGL 오류를 검사하지 않습니다.
  • 포인터가 눌러져 있는 동안 캐싱을 방지하여 일관성 없는 프레임 속도를 피함으로써 인지된 ScrollView 성능을 향상시킵니다.
  • 이미지와 같은 요소가 불투명한 사소한 경우에 빠른 트랙 렌더링을 사용하지 못하게 하는 버그가 수정되었습니다 (텍스처 렌더링을 피함).
  • 경계 상자 계산 방법 최적화 (레이아웃 및 렌더링 성능 향상)

Multitouch

  • 손가락 하나를 들었을 때 멀티 터치 중에 모든 입력이 멈추는 문제가 해결되었습니다.
  • 네이티브 뷰를 구현할 때 터치 이벤트의 자동 처리를 선택 해제하는 옵션을 추가했습니다.

Attract

  • 이전에는 premiumlib에서만 사용되었던 매력적인 기능을 추가했습니다. 이것은 Attractor 동작보다 훨씬 간단한 구문을 애니메이션에 제공합니다.

Gesture

  • 실험적인 IGesture 인터페이스가 변경되었습니다.
    • 중요도, 우선 순위 및 PriotityAdjustment가 단일 GetPriority 함수로 병합되었습니다.
    • OnCapture가 OnCaptureChanged로 변경되고 이전 캡처 상태를 제공합니다.
  • Clicked, DoubleClicked, Tapped, DoubleTapped 및 LongPressed는 기본 “첫 번째”포인터 누름 만 감지하도록 수정되었습니다. 포인터 색인을 허용하려면 PointerIndex = “Any”를 제스처에 추가하십시오.
  • SwipeGesture, ScrollView, LinearRangeBehaviour (Slider), CircularRangeBehaviour, Clicked, Tapped, DoubleClicked, DoubleTapped, LongPressed, WhilePressed는 모두 제스처 시스템을 사용합니다. 상대 우선 순위를 조정하는 데 사용할 수있는 GesturePriority 속성이 있습니다. 대부분 기본값은 괜찮을지라도.
  • SwipeGesture.GesturePriority 기본값이 높음에서 낮음으로 변경되었습니다. 이 기능은 일반 앱에서 우선 순위가 함께 작동하는 방식에 더 잘 맞으며 일반적으로 일반적인 레이아웃에는 영향을 미치지 않습니다. GesturePriority=”High”로 우선 순위를 변경할 수 있습니다.

Each 재사용

  • Each 노드에 재사용을 허용하는 재사용 기능 추가
  • Visual에 OnChildMoved를 추가했습니다. OnChildAdded 또는 OnChildRemoved를 구현하는 모든 것이 OnChildMoved를 구현해야 할 가능성이 높습니다. 이것은 자식 목록에 있는 자식의 위치가 변경 될 때 발생합니다.
  • IParentObserver에 OnChildMovedWhileRooted를 추가했습니다.

WhileVisibleInScrollView

  • Partial(기본값) 및 전체 값을 허용하는 WhileVisibleInScrollView 트리거에 속성을 추가했습니다. 전체로 설정하면 전체 요소 경계가 뷰 내부 일 때만 트리거가 활성화 됩니다.

깨진 우노 툴 제거됨

  • uno perf-test와 uno perf-cmp는 사용되지 않았고 끊어졌으며 제거되었습니다.

중단된 기능들(Deprecations)

  • Uno.FakeTime 클래스는 사용되지 않는 것으로 표시되었습니다.
  • Uno.Compiler.ExportTargetInterop의 ExportCondition 특성이 사용되지 않는 것으로 표시되었습니다.
  • Uno.Diagnostics.Debug의 기존 Alert 및 Confirm 메서드는 사용되지 않는 것으로 표시되었습니다.
  • Uno.Graphics의 중복 된 SupportsMipmap 필드가 사용되지 않는 것으로 표시되었습니다.
  • 상수 인 float.ZeroTolerance가 사용되지 않는 것으로 표시되었습니다.