ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
UIKitの新機能
タブやドキュメントの起動時の体験、トランジション、テキストおよび入力に関する変更点など、UIKitの最新情報のすべてをご紹介します。また、これまで以上に向上した、アニメーションおよびジェスチャに関するUIKitとSwiftUIの相互運用性のほか、UIKit全体の全般的な改善点についても解説します。
関連する章
- 0:00 - Introduction
- 0:55 - Document launch experience
- 1:24 - Updated tab and sidebar
- 2:43 - Fluid transitions
- 3:35 - SwiftUI animations in UIKit
- 4:24 - Coordinated gesture recognizers
- 6:02 - Automatic trait tracking
- 7:44 - List improvements
- 11:18 - UIUpdateLink
- 12:55 - SF Symbol animations
- 14:36 - Sensory feedback
- 16:14 - Text improvements
- 18:14 - Menu actions
- 18:58 - Apple Pencil Pro and PencilKit
リソース
関連ビデオ
WWDC24
WWDC23
WWDC21
-
ダウンロードArray
-
-
0:01 - Using SwiftUI to animate UIViews with gestures
switch gesture.state { case .changed: UIView.animate(.interactiveSpring) { bead.center = gesture.translation } case .ended: UIView.animate(.spring) { bead.center = endOfBracelet } }
-
0:02 - Setting failure requirements between gestures
// Inner SwiftUI double tap gesture Circle() .gesture(doubleTap, name: "SwiftUIDoubleTap") // Outer UIKit single tap gesture func gestureRecognizer( _ gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf other: UIGestureRecognizer ) -> Bool { other.name == "SwiftUIDoubleTap" }
-
0:03 - Responding to horizontalSizeClass trait
class MyView: UIView { override func layoutSubviews() { super.layoutSubviews() if traitCollection.horizontalSizeClass == .compact { // apply compact layout } else { // apply regular layout } } }
-
0:04 - Using the new automatic content and background configurations
func configurations(for location: FileLocation) -> (UIListContentConfiguration, UIBackgroundConfiguration) { var contentConfiguration = UIListContentConfiguration.cell() let backgroundConfiguration = UIBackgroundConfiguration.listCell() contentConfiguration.text = location.title contentConfiguration.image = location.thumbnailImage return (contentConfiguration, backgroundConfiguration) }
-
0:05 - Using UIUpdateLink
let updateLink = UIUpdateLink( view: view, actionTarget: self, selector: #selector(update) ) updateLink.requiresContinuousUpdates = true updateLink.isEnabled = true @objc func update(updateLink: UIUpdateLink, updateInfo: UIUpdateInfo) { view.center.y = sin(updateInfo.modelTime) * 100 + view.bounds.midY }
-
0:06 - An example of providing UICanvasFeedbackGenerator with additional context
@ViewLoading var feedbackGenerator: UICanvasFeedbackGenerator override func viewDidLoad() { super.viewDidLoad() feedbackGenerator = UICanvasFeedbackGenerator(view: view) } func dragAligned(_ sender: UIPanGestureRecognizer) { feedbackGenerator.alignmentOccurred(at: sender.location(in: view)) }
-
0:07 - Using new attributes for highlight
var attributes = [NSAttributedString.Key: Any]() // Highlight style attributes[.textHighlightStyle] = NSAttributedString.TextHighlightStyle.default // Highlight color scheme attributes[.textHighlightColorScheme] = NSAttributedString.TextHighlightColorScheme.default
-
0:08 - Customizing formatting panel
textView.textFormattingConfiguration = .init(groups: [ .group([ .component(.fontAttributes, .mini), .component(.fontPicker, .regular), .component(.textColor, .mini) ]), .group([ .component(.fontPointSize, .mini), .component(.listStyles, .regular), .component(.highlight, .mini) ]) ])
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。