iOS 위젯을 지원하는 데 알고 싶었던 점
앞으로 위젯을 지원하는 사람의 도움이되면
사이즈 지정
supportedfamilies 로 지정
struct SampleWidget: Widget {
var body: some WidgetConfiguration {
StaticConfiguration(kind: "sample", provider: SampleWidget.Provider()) { entry in
SampleWidgetEntryView(entry: entry)
}
.supportedFamilies([.systemSmall, .systemMedium])
.configurationDisplayName("displayName")
.description("description")
}
}
WidgetBundle의 다중 위젯
WidgetBundle 에서 다중 패턴 위젯 구성 가능
@main
어노테이션을 잊지 않고@main
struct Widgets: WidgetBundle {
var body: some Widget {
Widget1()
Widget2()
Widget3()
}
}
Image의 둥근
위젯 자체가 둥근이므로 이미지도 둥글게하는 것이 정석이라고 생각하기 때문에
clipshape
와 RoundedRectangle
에서 가능iOS14에서 등장했다.
struct ImageView: View {
let image: UIImage
var body: some View {
Image(uiImage: image)
.resizable()
.scaledToFit()
.clipShape(RoundedRectangle(cornerRadius: 8))
}
}
미리보기
라이트 모드, 다크 모드, 플레이스홀더, 사이즈 차이를 단번에 확인하고 싶기 때문에
위젯 크기
previewContext
.clipShape(ContainerRelativeShape())
로 지정라이트 모드, 다크 모드
colorScheme
.previewContext(WidgetPreviewContext(family: .systemMedium))
로 지정자리 표시자
.environment(\.colorScheme, .light)
로 지정struct SampleWidget_Previews: PreviewProvider {
static var previews: some View {
/// ライトモード
SampleEntryView(entry: .init(date: Date())
.previewContext(WidgetPreviewContext(family: .systemMedium))
.environment(\.colorScheme, .light)
/// ダークモード
SampleEntryView(entry: .init(date: Date())
.previewContext(WidgetPreviewContext(family: .systemMedium))
.environment(\.colorScheme, .dark)
/// プレースホルダー表示
SampleEntryView(entry: .init(date: Date())
.previewContext(WidgetPreviewContext(family: .systemMedium))
.redacted(reason: .placeholder)
}
}
Spacer의 minLength
doc 페이지
12ProMax에서 초대 SE까지의 레이아웃에 대응하지 않으면 안되며,
.redacted(reason: .placeholder)
지정한 좌표분 최저한 스페이스를 취해, 묘화 영역에 여유가 있으면 자동으로 퍼져 주기 때문에 매우 편리!
Reference
이 문제에 관하여(iOS 위젯을 지원하는 데 알고 싶었던 점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rymshm/items/5d9698c5c921d8b63b56텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)