WatchKit 사용자 정의 UI 구현 방법의 요약
이 기사는 각종 맞춤형 UI 제작 방법을 수시로 정리하고 싶어 한다.
원형 표시기 UI/애니메이션
애플의 Interface Guide에 게재된 UI
Core Graphics와 UIBezierPath를 사용하여 Watch App에서 동적으로 그릴 수 없어서 유감입니다.
그렇다면 어떻게 할지는 애플의 공식 샘플'리스터'가 정답을 보여줬다.
이 Asset Catallog의 Square를 보니 애플도 일반적인 연호 애니메이션으로 이루어진 것 같다.
swift
self.circularProgressImage.setImageNamed("progress-")
self.circularProgressImage.startAnimatingWithImagesInRange(
NSMakeRange(0, 359),
duration: 2.0,
repeatCount: 0)
(360개의 일련 번호 이미지 애니메이션 사용)동적 리소스를 사용한 애니메이션
왓치키트 앱 쪽에 넣은'Static'리소스의 애니메이션
setImageNamed:
과 startAnimatingWithImagesInRange:
을 사용하면 고속 애니메이션이 가능하지만, 왓치키트 앱의 Asset Catallog에 없는'다이너믹'리소스를 사용하는 경우setImage
에서 전송// NGパターン
func onUpdate(timer: NSTimer) {
let fileName = String(format: "frame_%d", self.currentIndex)
let image = UIImage(named: fileName)
self.image.setImage(image)
self.currentIndex = currentIndex < kNumberOfFrames - 1 ? currentIndex + 1 : 0
}
이렇게 하면 공연이 매우 나빠질 것이다.나는 전송인지 그림인지 모르겠지만, 전혀 늦었다.
그러면 현금 캐시를 사용하는지 아닌지, 모든 프레임의 이미지 캐시를 프로그래밍 안내서에 명기하는 것을 추천하지 않는다(※ 캐시 애니메이션 자체는 문제가 되지 않는다).
프로그래밍 안내서에 표시된 정답은 "Animated Image"방법을 사용하는 것입니다.
swift
var images: [UIImage] = []
for var i=0; i<kNumberOfFrames; i++ {
let fileName = String(format: "yusha_%d", i);
let image = UIImage(named: fileName)
images.append(image!)
}
let animatedImage = UIImage.animatedImageWithImages(
images,
duration: duration)
self.image.setImage(animatedImage)
self.image.startAnimating()
UIImageanimatedImageWithImages:duration:
를 사용하여 Animated UIImage 객체를 생성한 후setImage:
.상당히 원활한 애니메이션.(그림의 크기에 따라 30fps는 괜찮을 것 같다는 느낌을 해봤습니다.※ 측정 코드가 준비되어 있어도 결과는 Extension 측의 성능만 측정할 수 있기 때문에 Watch 측의 실측값을 알 수 없습니다.)
사용자 정의 글꼴
iOS와 동일한 단계에 따라 수행할 수 있습니다.
인터페이스 덮어쓰기
WKINterfaceObject는 UIView의 subview에서 인터페이스를 중첩할 수 없습니다.
그러면 인터페이스 구성 UI를 덮어쓸 수 없다고 해도 그렇지 않다. WKINterface Group으로 설정할 수 있는 배경 이미지
setBackgroundImage:
를 이용하면 된다.위 이미지에서 배경 이미지는 WKINter faceLabel과 여러 WKINter faceImage를 중첩합니다.
origin 조정
WKINterfaceObject에는 (UIView에서)
frame.origin
성질의 속성이 없습니다.UIEdgeInsets 같은 것도 없습니다.하지만 여기서도 WKINterface Group을 활용하여 가상의 WKINter face Object 자반을 이용하여 이윤을 창출할 수 있어 잘 조정할 수 있다.
사방
WKInterfaceGroup
에는 setCornerRadius:
라는 방법이 있다.IB라면 Radius 열에서 설정할 수 있습니다.그림을 각환으로 설정하려면
WKInterfaceImage
를 WKInterfaceGroup
에 넣으십시오.테이블 셀 높이 수정하기
일반적으로 내용의 높이에 따라 결정된다.
38mm와 42mm로 배치 설정
IB의 + 버튼을 사용하여 설정할 수 있습니다.Size Class 와 같은 방식으로 분류됩니다.
화면이 n등분되도록 Interface 객체 설정
IB에서 Relative to Container의 배율을 설정할 수 있습니다(기본값은 1).
사용자 인터페이스 사용자화
IB의 중심을 "Group"으로 전환(기본값은 "Text")
Apple Watch 표준 로드 애니메이션
애니메이션을 불러오거나 애플이라면 Activity Indicator인데 워치키트는 이런 API를 제공하지 않은 것으로 알려져 있다.최대한 시간을 들여 처리하지 말라는 말인 것 같습니다.
0.8 정도 duration이 딱 맞는 것 같아요.
테이블에서 여러 셀 사용
(WKinter faceTable에서 "Cell"이라는 표현이 없고 "row"라고만 할 수 있지만 일단 말하지 않음) 이렇게 여러 개의 Row Controller를 만들었어요.
이런 느낌
setRowTypes
으로 사용하는 단원의 row name(Row Controller의identifier) 목록을 교부하면let rowTypes = [
"LabelCell",
"LabelCell",
"SwitchCell",
"SwitchCell",
]
table.setRowTypes(rowTypes)
이렇게 하면 여러 개의 칸을 사용하는 표를 실현할 수 있다.(계속)
수시로 예약을 갱신하세요!
참고 문장
Reference
이 문제에 관하여(WatchKit 사용자 정의 UI 구현 방법의 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shu223/items/e704f70abc50da32ba38텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)