기사 목록
119개의 글이 있습니다
SwiftUI에서 시스템 콘텐츠 여백 사용하기
How to use layoutMarginsGuide in SwiftUI
- 고정된 `.padding(.horizontal, 16)`은 기기와 방향에 따라 달라지는 시스템 여백에 맞지 않을 수 있으며, iPhone Duo에서는 좌우 여백이 비대칭이어서 화면 가장자리와 세로 바 위치를 모두 놓칠 수 있다.
- iOS 27.1의 `.contentMargins(for: .container)`는 현재 컨테이너와 뷰 위치에 맞춘 시스템 여백을 적용하며, `GeometryProxy.contentMargins(for:edges:)`는 같은 여백 값을 `EdgeInsets`로 반환한다.
- SwiftUI 여백 값은 UIKit의 `layoutMargins`와 달리 safe area를 포함하지 않는다. iOS 27.0을 지원할 때는 대체 modifier를 둘 수 있지만, `.padding(.horizontal)`도 기기별 차이를 정확히 반영하지 못한다.
Xcode Instruments에서 SwiftUI 뷰 다시 그리기와 원인 추적하기
SwiftUI Performance: Find Redraws in Xcode Instruments
- SwiftUI 템플릿으로 짧고 집중된 상호작용을 기록한 뒤 View Body Updates 계층과 표에서 뷰별 업데이트 횟수와 실행 시간을 함께 확인한다.
- Root Causes와 cause-and-effect 그래프를 따라가면 업데이트를 유발한 프로퍼티를 찾을 수 있으며, 잦은 업데이트와 느린 body 실행을 구분해 대응할 수 있다.
- 단일 body 업데이트가 짧아도 반복 횟수가 많으면 비용이 쌓이므로, 코드를 바꾼 뒤 동일한 상호작용을 다시 기록해 측정값을 비교해야 한다.
PlanFlow: 코딩 에이전트의 프로젝트 결정을 직접 관리하기
My PlanFlow Mod: Take Control Of Your Project Decisions!
- PlanFlow는 Claude가 기능을 구현하기 전에 큰 그림 계획과 단계별 세부 계획을 제시하고, 사용자가 결정과 메모를 승인하거나 수정하도록 한다.
- 사용자는 ‘Decide for me’에서 에이전트가 멈춰 질문할 상황과 대신 결정할 범위를 설정해, 작은 선택에 매몰되지 않으면서 프로젝트 방향을 통제할 수 있다.
- 계획 승인 뒤에야 코딩을 시작하며, 에이전트가 내린 결정과 사용자가 해야 할 작업을 목록으로 남겨 세션을 떠났다가 돌아와도 진행 상황을 확인할 수 있다.
Swift 6.4에서 괄호 없이 쓰는 some View?와 any 프로토콜 타입
some View? without parentheses in Swift 6.4
- Swift 6.4의 SE-0521은 타입 뒤의 ?와 !가 some 또는 any 타입 전체에 적용되도록 해, some P?를 (some P)?로 해석한다.
- 단일 프로토콜 existential에서는 any P?가 (any P)?와 같은 타입이며, 기존 괄호 표기도 유지돼 마이그레이션이나 ABI 변경이 필요하지 않다.
- 프로토콜 조합은 여전히 괄호가 필요하다. ExistentialAny를 적용할 때 단일 프로토콜의 선택적 타입에는 any P? 형태의 fix-it이 제공된다.
UIKit에서 layoutMarginsGuide로 시스템 여백에 맞추기
How to use layoutMarginsGuide in UIKit
- 고정된 16포인트 여백은 기기와 방향에 따라 내비게이션 바의 제목과 어긋날 수 있으므로, layoutMarginsGuide에 제약을 연결하면 시스템이 정한 여백을 따를 수 있다.
- layoutMarginsGuide는 기본적으로 safe area 안쪽에서 추가 여백을 적용하며, layoutMargins 값은 safe area까지 포함한 뷰 가장자리로부터의 전체 거리를 나타낸다.
- 시스템 여백은 뷰 컨트롤러의 기본 뷰에 적용되고 하위 뷰는 기본적으로 각 측면 8포인트를 사용하므로, 여백을 전달하려면 preservesSuperviewLayoutMargins를 설정해야 한다.
AskAppleDocs로 에이전트에 최신 Apple SDK 문서를 제공하기
AskAppleDocs: Give your Agent Access to the latest Apple SDK APIs Automatically
- AskAppleDocs CLI를 호출하는 `/askappledocs` skill은 에이전트가 코드를 작성하기 전에 관련 Apple 문서만 컨텍스트에 불러온다.
- 최신 SDK 정보를 놓친 에이전트가 오래된 API나 스타일을 먼저 구현하고 수정하는 과정을 줄이는 것이 도구를 만든 목적이다.
- 작성자는 CLI 도구가 에이전트의 토큰 예산을 직접 쓰지 않고 명확한 입출력으로 동작하므로 토큰 절약에 도움이 된다고 설명한다.
Claude Code에서 시뮬레이터 실행 없이 Xcode Preview로 SwiftUI 개발하기
Faster SwiftUI Development in Claude Code: See Xcode Previews Without a Simulator Run
- Xcode MCP의 RenderPreview와 Claude의 mods를 연결하면 시뮬레이터를 실행하는 대신 Xcode Preview 이미지를 에이전트 작업에 활용할 수 있다.
- SwiftUI Preview mod는 /preview 명령을 가로채 프로젝트의 Preview와 시뮬레이터 정보를 모은 뒤, Xcode RenderPreview를 호출해 결과 이미지를 반환한다.
- Xcode 26.3 이상에서 MCP 서버를 켜고 Claude 또는 Codex에 등록해야 하며, 프로젝트를 Xcode에서 연 뒤 에이전트 연결을 허용해야 한다.
iPhone Duo에 맞춰 SwiftUI 앱 레이아웃 조정하기
Adapting your app for iPhone Duo
- iPhone Duo는 접힌 상태와 펼친 상태에서 가로 size class가 달라지므로, 화면 크기나 기기 종류가 아니라 size class를 기준으로 레이아웃을 조정해야 한다.
- TabView의 sidebarAdaptable 스타일과 NavigationSplitView는 compact·regular 환경에 따라 탐색 구조를 바꾸며, defaultTabBarPlacement로 탭 바의 기본 위치를 지정할 수 있다.
- AnyLayout을 사용하면 콘텐츠의 구조적 identity를 유지하면서 세로·가로 레이아웃을 전환할 수 있고, Xcode의 App Resizability skill을 에이전트에 적용할 수도 있다.
RocketSim과 RocketTrace로 구현하는 에이전트 기반 iOS 개발
Agentic iOS Development with RocketSim and RocketTrace
- RocketSim은 에이전트가 시뮬레이터에서 앱을 탐색하고 접근성 트리와 화면을 확인하게 하며, RocketTrace는 Xcode Instruments 기록에서 성능 문제를 추려 근거와 함께 제공한다.
- 접근성 감사에서는 141개 요소를 검사한 홈 화면이 0점에서 99점으로 개선됐고, Amplitude 분석 결과를 바탕으로 첫 영상 압축을 돕는 TipKit 안내를 구현했다.
- 네 가지 작업 모두 Plan mode에서 근거와 수정 계획을 먼저 검토한다. 성능 분석에서 확인되지 않은 화면의 문제는 추측해 수정하지 않고 추가 기록을 계획했다.
ArrangementView 분할 비율을 splitArrangementLayoutRatio로 조정하기
Set the split size of ArrangementView with splitArrangementLayoutRatio
- iOS 27.1의 splitArrangementLayoutRatio는 ArrangementView 안의 뷰가 차지할 화면 비율을 지정하며, 가로·세로 방향별 값이나 공통 비율을 설정할 수 있다.
- 가로로 나란히 놓일 때는 idealHorizontal, 세로로 쌓일 때는 idealVertical을 사용하며, 각 값은 해당 축에서만 적용되고 다른 축의 배치에는 영향을 주지 않는다.
- 반쯤 접힌 iPhone Duo에서는 분할이 힌지 위치를 따르므로 지정한 비율이 무시되며, 콘텐츠가 할당 공간을 초과해도 뷰 크기는 자동으로 늘어나지 않는다.