Skip to content

[#145] 시트에 툴바를 통해 cancel, confirm 버튼을 구성한다#153

Merged
opficdev merged 6 commits intodevelopfrom
feat/#145-sheet-toolbar
Feb 27, 2026
Merged

[#145] 시트에 툴바를 통해 cancel, confirm 버튼을 구성한다#153
opficdev merged 6 commits intodevelopfrom
feat/#145-sheet-toolbar

Conversation

@opficdev
Copy link
Owner

@opficdev opficdev self-assigned this Feb 27, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 시트(sheet)에 취소 및 확인 기능을 제공하는 재사용 가능한 툴바 컴포넌트를 도입하여 사용자 경험을 개선하고 UI 일관성을 높입니다. 기존 뷰에서 툴바 구현을 새로운 SheetToolbar로 대체하고, adaptiveButtonStyle 수정자를 개선하여 다양한 UI 요소에 대한 스타일링 유연성을 확장합니다. 또한, 여러 컴포넌트에서 색상 사용을 표준화하여 전반적인 시각적 통일성을 강화합니다.

Highlights

  • 새로운 SheetToolbar 컴포넌트 추가: 시트에 취소 및 확인 버튼을 제공하는 재사용 가능한 SheetToolbar 컴포넌트가 추가되었습니다.
  • adaptiveButtonStyle 수정자 리팩토링: adaptiveButtonStyle 수정자가 iOS 버전에 관계없이 유연성과 일관성을 제공하도록 개선되었습니다.
  • 기존 뷰에 SheetToolbar 적용: TodoEditorViewPushNotificationSettingsView가 이제 새로운 SheetToolbar를 사용하여 툴바 기능을 통합합니다.
  • UI 색상 일관성 개선: 여러 UI 요소에서 accentColorColor.blue로 변경되어 색상 일관성이 향상되었습니다.
  • presentationDragIndicator 가시성 변경: TodoEditorViewDueDatePickerpresentationDragIndicator.hidden에서 .visible로 변경되었습니다.
Changelog
  • DevLog/UI/Common/Componeent/CheckBox.swift
    • 체크박스 아이콘의 foregroundStyleColor.accentColor에서 Color.blue로 변경되었습니다.
  • DevLog/UI/Common/Componeent/SheetToolbar.swift
    • onCancel, onConfirm, isConfirmEnabled 속성을 가진 새로운 SheetToolbar 구조체가 추가되었습니다.
    • iOS 26.0 이상에서는 Button(role: .cancel)Button(role: .confirm)을 사용하고, 이전 버전에서는 '취소' 및 '확인' 텍스트 버튼을 사용하는 조건부 툴바 콘텐츠를 구현했습니다.
  • DevLog/UI/Common/Componeent/WebItemRow.swift
    • displayURL 텍스트의 foregroundStyleColor.accentColor에서 Color.blue로 변경되었습니다.
  • DevLog/UI/Extension/View+.swift
    • adaptiveButtonStyle 수정자가 shapecolor 매개변수를 받도록 변경되어 더 유연한 스타일링이 가능해졌습니다.
    • iOS 26.0 이상에서는 glassEffect를 사용하고, 이전 버전에서는 ultraThinMaterialCapsule 또는 사용자 정의 shape를 사용하는 조건부 구현으로 업데이트되었습니다.
    • font(.footnote)padding(.vertical, 8).padding(.horizontal, 16)이 제거되고 padding(8)로 통일되었습니다.
  • DevLog/UI/Home/TodoDetailView.swift
    • '수정' 버튼에서 foregroundColor(.accentColor) 수정자가 제거되었습니다.
  • DevLog/UI/Home/TodoEditorView.swift
    • 기존의 toolBar 클로저를 새로운 SheetToolbar 컴포넌트 사용으로 대체했습니다.
    • TagEditor 내 'plus' 버튼의 adaptiveButtonStyle 호출이 shape: .circlecolor 매개변수를 사용하도록 업데이트되었습니다.
    • DueDatePickerpresentationDragIndicator.hidden에서 .visible로 변경되었습니다.
  • DevLog/UI/PushNotification/PushNotificationListView.swift
    • 정렬 및 기간 필터 버튼의 adaptiveButtonStyle 호출이 color 매개변수를 명시적으로 사용하도록 변경되었습니다.
    • '읽지 않음' 버튼의 foregroundStyleunreadOnly 상태에 따라 .white 또는 Color(.label)로 조건부 적용되도록 변경되었습니다.
  • DevLog/UI/Setting/PushNotificationSettingsView.swift
    • 푸시 알림 시간 설정 체크마크의 foregroundStyleColor.accentColor에서 Color.blue로 변경되었습니다.
    • 기존의 toolbar 클로저를 새로운 SheetToolbar 컴포넌트 사용으로 대체했습니다.
    • 더 이상 사용되지 않는 toolbar computed property가 제거되었습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

시트의 툴바를 SheetToolbar라는 재사용 가능한 컴포넌트로 분리하여 일관된 UI를 제공하도록 리팩토링한 점이 좋습니다. 이를 통해 TodoEditorViewPushNotificationSettingsView의 코드가 간결해졌습니다. 다만, visionOS를 지원하기 위한 것으로 보이는 코드에서 플랫폼 버전 확인에 오류가 있어 수정이 필요해 보입니다. 자세한 내용은 각 파일의 리뷰 코멘트를 참고해주세요.

}

var body: some ToolbarContent {
if #available(iOS 26.0, *) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

iOS 26.0 버전 체크는 현재 및 가까운 미래의 OS에서 항상 false를 반환하므로 else 블록의 코드만 실행됩니다. Button(role:)은 iOS 15.0부터 사용 가능하므로, 만약 iOS 버전을 기준으로 분기하려는 의도였다면 if #available(iOS 15.0, *)과 같이 더 낮은 버전으로 수정해야 합니다.

만약 visionOS를 지원하기 위한 코드라면, #if os(visionOS) 전처리기 매크로를 사용하거나 if #available(visionOS 1.0, *)으로 확인하는 것이 더 정확합니다. 다른 파일에서 glassEffect와 같은 visionOS 전용 API를 사용하는 것으로 보아 후자일 가능성이 높아 보입니다.

잘못된 버전 체크는 의도한 UI가 표시되지 않는 버그를 유발할 수 있으므로 수정이 필요합니다.

Suggested change
if #available(iOS 26.0, *) {
if #available(visionOS 1.0, *) {

shape: some Shape = .capsule,
color: Color = .clear)
-> some View {
if #available(iOS 26.0, *) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

여기에서도 iOS 26.0 버전 체크가 사용되었습니다. glassEffectvisionOS에서만 사용 가능한 API이므로, 이 코드가 visionOS를 위한 것이라면 if #available(visionOS 1.0, *)으로 조건을 변경해야 합니다. 현재 코드는 visionOS에서도 if 블록이 실행되지 않아 glassEffect가 적용되지 않는 문제를 야기합니다.

Suggested change
if #available(iOS 26.0, *) {
if #available(visionOS 1.0, *) {

@opficdev opficdev merged commit 2f00400 into develop Feb 27, 2026
1 check passed
@opficdev opficdev deleted the feat/#145-sheet-toolbar branch February 27, 2026 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

시트에 툴바를 통해 cancel, confirm 버튼을 구성한다

1 participant