Popovers ๐ŸŽ

YaR Labยท2023๋…„ 12์›” 4์ผ
0

iOSย ๐ŸŽ

๋ชฉ๋ก ๋ณด๊ธฐ
24/26
post-thumbnail

์ฃผ๋กœ ์•„์ดํŒจ๋“œ์—์„œ ์‚ฌ์šฉ

  • preferredContentSize: ๋„์–ด์ค„ ๋ทฐ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ •ํ•จ
  • popoverPresentationController.sourceView: ๋„์šธ ๋ถ€๋ชจ ๋ทฐ
  • popoverPresentationController.sourceRect: ์–ด๋””์— ๋„์šธ์ง€

Trouble ๐Ÿ“›


๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ถ„๋ฆฌ๋œ ๋ทฐ์ปจ์—์„œ ๋ทฐ๋ฅผ ๋„์šฐ๋Š” ๊ฑธ ํ•˜์ง€ ๋ง๋ผ๊ณ  ํ•œ๋‹ค
https://developer.apple.com/forums/thread/29787
์ด๊ฑธ ๋ณด๊ณ 

self.view.window?.rootViewController?.present(popoverViewController, animated: false)

๋ฐฉ์‹์œผ๋กœ ๋„์šฐ๋‹ˆ๊น ์˜ค๋ฅ˜๊ฐ€ ํ•ด๊ฒฐ๋๋‹ค

Displaying transient content in a popover

  • ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •
  • popover presentation style ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ‘œ์‹œ(modalPresentationStyle์„ ์„ค์ •)
  • UIKit์€ ํŒ์˜ค๋ฒ„๋ฅผ ์ง€์ •ํ•œ ์œ„์น˜์— ๊ณ ์ •์‹œํ‚ด
  • ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ UIPopoverPresentationController๊ฐ€ ํ™”๋ฉด์— ํŒ์˜ค๋ฒ„๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์„ ๊ด€๋ฆฌํ•จ
  • present ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ ํ•˜๊ธฐ ์ „์— ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ UIPopoverPresentationController ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผํ•จ
  • ํŒ์˜ค๋ฒ„์˜ ํ‘œ์‹œ์™€ ํ•ด์ œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ํ• ๋‹น ํ•  ์ˆ˜ ์žˆ์Œ

H.I.G

  • ์‚ฌ๋žŒ๋“ค์ด ์ปจํŠธ๋กค์ด๋‚˜ ๋Œ€ํ™”ํ˜• ์˜์—ญ์„ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ํƒญํ•  ๋•Œ ๋‹ค๋ฅธ ์ฝ˜ํ…์ธ  ์œ„์— ๋‚˜ํƒ€๋‚˜๋Š” ์ผ์‹œ์ ์ธ ๋ณด๊ธฐ
  • ์†Œ๋Ÿ‰์˜ ์ •๋ณด๋‚˜ ๊ธฐ๋Šฅ์„ ๋…ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉ
  • ํ•„์š”ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…๋งŒ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์•ผ ํ•จ
  • ์ฝ˜ํ…์ธ ๋ฅผ ์œ„ํ•œ ๋” ๋งŽ์€ ๊ณต๊ฐ„์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํŒ์˜ค๋ฒ„ ์‚ฌ์šฉ์ด ๋งž๋Š”์ง€ ๊ณ ๋ คํ•ด ๋ด์•ผํ•จ
  • ์ฝ˜ํ…์ธ ๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ๋งŒ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Œ
  • Popover์˜ ํ™”์‚ดํ‘œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ •ํ™•ํ•˜๊ฒŒ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•ด์•ผํ•จ
  • ์ด์ƒ์ ์ธ Popover๋Š” Popover ์‚ฌ์šฉ ์ค‘ ์‚ฌ๋žŒ๋“ค์ด ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•  ์ค‘์š” ์ปจํ…์ธ ๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š์•„์•ผ ํ•จ
  • ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์€ ํ™•์ธ ๋ฐ ์•ˆ๋‚ด ๋ชฉ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•ด์•ผํ•จ

UIPopoverPresentationController

@MainActor
class UIPopoverPresentationController : UIPresentationController
  • ํŒ์˜ค๋ฒ„์—์„œ ์ฝ˜ํ…์ธ ์˜ ํ‘œ์‹œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด
  • ํŒ์˜ค๋ฒ„๊ฐ€ ํ‘œ์‹œ๋œ ์‹œ์ ๋ถ€ํ„ฐ ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€ UIKit์€ ์ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์‹œ ๋™์ž‘์„ ๊ด€๋ฆฌํ•จ
  • UIModalPresentationStyle.popover๋กœ ์„ค์ •๋œ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ํŒ์˜ค๋ฒ„ ์™ธ๊ด€ ๋ฐ ๋™์ž‘์„ ๊ตฌ์„ฑํ•จ
  • ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ด ํด๋ž˜์Šค๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์Œ
  • UIKit์€ UIModalPresentationStyle.popover ๋กœ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ‘œ์‹œํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•จ
  • ํ‘œ์‹œ๋œ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ popoverPresentationController ์˜ ์†์„ฑ์œผ๋กœ ํŒ์˜ค๋ฒ„์˜ ๋™์ž‘์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Œ

์ถœ์ฒ˜๐Ÿ“š

๐ŸŽApple H.I.G: Popovers
๐ŸŽApple Docs: Displaying transient content in a popover
๐ŸŽApple Docs: UIPopoverPresentationController

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด