{"id":494762,"date":"2026-09-15T13:59:47","date_gmt":"2026-09-15T13:59:47","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=494762"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=494762","title":{"rendered":"\u0410\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f iOS-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u0434 iPhone Duo"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/714\/c10\/49a\/714c1049a0e4c25214c3c93c9a429b80.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/714\/c10\/49a\/714c1049a0e4c25214c3c93c9a429b80.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/714\/c10\/49a\/714c1049a0e4c25214c3c93c9a429b80.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u042f \u0412\u0430\u043b\u0435\u0440\u0438\u044f \u041a\u0443\u0434\u0440\u044f\u0432\u0446\u0435\u0432\u0430, iOS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 <a href=\"https:\/\/kts.tech\/mobile\">KTS<\/a>. \u041f\u043e\u0440\u0430 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043d\u043e\u0432\u0438\u043d\u043a\u0435.<\/p>\n<p>9 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430 Apple <a href=\"https:\/\/www.apple.com\/newsroom\/2026\/09\/apple-unveils-iphone-duo\/\">\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430<\/a> iPhone Duo, \u0441\u0432\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043a\u043b\u0430\u0434\u043d\u043e\u0439 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d. \u041f\u043e\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c-\u0444\u0430\u043a\u0442\u043e\u0440, \u0443 \u043d\u0430\u0441, iOS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0432\u043e\u043f\u0440\u043e\u0441 \u0431\u044b\u043b \u0434\u0440\u0443\u0433\u043e\u0439: \u043a\u0430\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441 \u0434\u0432\u0443\u043c\u044f \u044d\u043a\u0440\u0430\u043d\u0430\u043c\u0438 \u0438 \u0441\u0433\u0438\u0431\u043e\u043c. \u0414\u043b\u044f \u043d\u0430\u0441 Apple \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0430 \u0440\u0430\u0437\u0434\u0435\u043b HIG \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0434 Duo, \u0448\u0435\u0441\u0442\u044c Tech Talks \u0438 \u0445\u0430\u0431 <a href=\"https:\/\/developer.apple.com\/iphone-duo\/\">Get Ready for iPhone Duo<\/a>.<\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 Tech Talks Apple. Xcode 27.1 beta \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0432\u044b\u0448\u0435\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 27.1 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u043c. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 SDK.<\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c. \u041f\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 Apple, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u044f\u0442\u0441\u044f \u043d\u0430 Duo \u0438 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438. \u041d\u043e \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u044d\u0442\u043e \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442: \u0442\u043e, \u043a\u0430\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u0439\u043c\u0451\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0438 \u043a\u0430\u043a \u043f\u043e\u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 SDK, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043e. \u0420\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0440\u0430\u0437\u0431\u0435\u0440\u0443 \u043d\u0438\u0436\u0435.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e pose Duo \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u0410 \u0432\u043e\u0442 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0451\u0440\u0441\u0442\u043a\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043a\u043e\u0434 \u0431\u0435\u0440\u0451\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u043b\u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u043c\u0438, \u043d\u0430 Duo \u0442\u0430\u043a\u0438\u0435 \u0440\u0430\u0441\u0447\u0451\u0442\u044b \u0434\u0430\u0434\u0443\u0442 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041e\u0441\u043d\u043e\u0432\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u043d\u0430: \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 UI, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u043d\u0430 size class.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f iOS 27, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0430\u043c\u0430 \u0438 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435, \u043d\u043e\u0432\u044b\u0435 API 27.1 \u0438 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0430\u0443\u0434\u0438\u0442\u0435. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0441\u0440\u0430\u0432\u043d\u044e \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0441 Android foldable \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 Compose Multiplatform.<\/p>\n<p><strong>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"#ios27\">iOS 27: \u0447\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#scene-lifecycle\">Scene lifecycle \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#screen-size\">\u0420\u0430\u0437\u043c\u0435\u0440 \u044d\u043a\u0440\u0430\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#orientation\">\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 layout<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#requires-fullscreen\">UIRequiresFullScreen \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 resize<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#duo-screens\">iPhone Duo: \u044d\u043a\u0440\u0430\u043d\u044b, pose \u0438 SDK<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#two-displays\">\u0414\u0432\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f, \u0440\u0430\u0437\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#poses\">\u041a\u0430\u043a\u0438\u0435 pose \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#sdk-version\">\u0427\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 SDK<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#system-or-code\">\u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0430 \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#containers\">\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432\u043e\u0437\u044c\u043c\u0443\u0442 \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u0441\u0435\u0431\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#toolbar\">\u041a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 toolbar \u043c\u0435\u043d\u044f\u044e\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#popovers\">\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#safe-area\">\u0421\u0432\u043e\u044f \u0432\u0451\u0440\u0441\u0442\u043a\u0430 \u0438 safe area<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#split-view\">Split View \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043d<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#api\">API \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 Duo<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#reserved-regions\">Reserved regions: \u0433\u0434\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u0433\u0438\u0431 \u0438 \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#arrangement-view\">ArrangementView: \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#hinge\">\u0423\u0433\u043e\u043b \u0441\u0433\u0438\u0431\u0430: \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#multi-scene\">\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0446\u0435\u043d: \u043d\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#open-window\">\u041a\u0430\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#close-window\">\u041a\u0430\u043a \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#share-between-windows\">\u0427\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043e\u043a\u043d\u0430\u043c\u0438<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#scene-accessories\">Scene Accessories<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#cameras\">\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#complexity\">\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#checklist\">\u0427\u0435\u043a\u043b\u0438\u0441\u0442 \u0430\u0443\u0434\u0438\u0442\u0430 \u0438 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#code-audit\">\u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#common-problems\">\u0422\u0440\u0438 \u0447\u0430\u0441\u0442\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/a> <\/p>\n<ul>\n<li>\n<p><a href=\"#problem-columns\">1. \u0414\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0430\u043b\u044c\u0431\u043e\u043c\u043d\u043e\u0439 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#problem-width\">2. \u0428\u0438\u0440\u0438\u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442 UIScreen.main.bounds<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#problem-stretch\">3. \u041d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0430<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#runtime-check\">\u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#android\">\u0421\u0440\u0430\u0432\u043d\u0438\u043c \u0441 Android foldable<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#cmp\">Compose Multiplatform<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#conclusion\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"ios27\" id=\"ios27\"><\/a><\/p>\n<h2>iOS 27: \u0447\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>\u041d\u0430\u0447\u043d\u0443 \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u0441\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u0445 iOS-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0412 iOS 27 \u043e\u043a\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440: \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 iPhone Mirroring \u043d\u0430 Mac \u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 iPhone-only \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 iPad. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0435\u0433\u043e iOS 27 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441.<\/p>\n<p><a class=\"anchor\" name=\"scene-lifecycle\" id=\"scene-lifecycle\"><\/a><\/p>\n<h3>Scene lifecycle \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c<\/h3>\n<p>\u041f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0441 iOS 27 SDK \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u043c UIKit lifecycle \u0431\u0435\u0437 scene lifecycle \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f. Apple \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u043b\u0430 \u043e\u0431 \u044d\u0442\u043e\u043c \u0441 <a href=\"https:\/\/developer.apple.com\/videos\/play\/wwdc2025\/282\/\">WWDC25<\/a>, \u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 <a href=\"https:\/\/developer.apple.com\/documentation\/technotes\/tn3187-migrating-to-the-uikit-scene-based-life-cycle\">TN3187<\/a>.<\/p>\n<p>\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043a\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432 <code>AppDelegate<\/code>: \u043d\u0443\u0436\u0435\u043d <code>UIApplicationSceneManifest<\/code> \u0438 <code>configurationForConnecting<\/code>.<\/p>\n<p>\u0411\u044b\u043b\u043e (UIKit \u0431\u0435\u0437 scene lifecycle \u0441 iOS 27 SDK \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f):<\/p>\n<pre><code class=\"swift\">@mainclass AppDelegate: UIResponder, UIApplicationDelegate {    var window: UIWindow?    func application(        _ application: UIApplication,        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?    ) -&gt; Bool {        window = UIWindow(frame: UIScreen.main.bounds)        window?.rootViewController = RootViewController()        window?.makeKeyAndVisible()        return true    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0442\u0430\u043b\u043e (scene-based lifecycle):<\/p>\n<pre><code class=\"swift\">\/\/ Info.plist: UIApplicationSceneManifest@mainclass AppDelegate: UIResponder, UIApplicationDelegate {    func application(        _ application: UIApplication,        configurationForConnecting connectingSceneSession: UISceneSession,        options: UIScene.ConnectionOptions    ) -&gt; UISceneConfiguration {        UISceneConfiguration(            name: \"Default Configuration\",            sessionRole: connectingSceneSession.role        )    }}class SceneDelegate: UIResponder, UIWindowSceneDelegate {    var window: UIWindow?    func scene(        _ scene: UIScene,        willConnectTo session: UISceneSession,        options connectionOptions: UIScene.ConnectionOptions    ) {        guard let windowScene = scene as? UIWindowScene else { return }        window = UIWindow(windowScene: windowScene)        window?.rootViewController = RootViewController()        window?.makeKeyAndVisible()    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><em>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 <\/em><code><em>Info.plist<\/em><\/code><em>:<\/em><\/p>\n<pre><code class=\"xml\">&lt;key&gt;UIApplicationSceneManifest&lt;\/key&gt;&lt;dict&gt;    &lt;key&gt;UIApplicationSupportsMultipleScenes&lt;\/key&gt;    &lt;false\/&gt;    &lt;key&gt;UISceneConfigurations&lt;\/key&gt;    &lt;dict&gt;        &lt;key&gt;UIWindowSceneSessionRoleApplication&lt;\/key&gt;        &lt;array&gt;            &lt;dict&gt;                &lt;key&gt;UISceneConfigurationName&lt;\/key&gt;                &lt;string&gt;Default Configuration&lt;\/string&gt;                &lt;key&gt;UISceneDelegateClassName&lt;\/key&gt;                &lt;string&gt;$(PRODUCT_MODULE_NAME).SceneDelegate&lt;\/string&gt;            &lt;\/dict&gt;        &lt;\/array&gt;    &lt;\/dict&gt;&lt;\/dict&gt;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0430 SwiftUI <code>App<\/code> \u0443\u0436\u0435 scene-based. \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043d\u0443\u0436\u043d\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c UIKit-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u0431\u0435\u0437 <code>UIApplicationSceneManifest.<\/code><\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c scene lifecycle \u043d\u0435 \u043e\u0431\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043d. \u0423 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u0430 scene. \u0421\u043c\u044b\u0441\u043b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 UI \u0431\u044b\u043b \u0441\u0432\u043e\u0439 scene lifecycle \u0438 \u0441\u0432\u043e\u0451 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p><a class=\"anchor\" name=\"screen-size\" id=\"screen-size\"><\/a><\/p>\n<h4>\u0420\u0430\u0437\u043c\u0435\u0440 \u044d\u043a\u0440\u0430\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430<\/h4>\n<p><code>UIScreen.main.bounds<\/code> \u043e\u0442\u0434\u0430\u0451\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430:<\/p>\n<pre><code class=\"swift\">let screenWidth = UIScreen.main.bounds.width<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u043e \u043e\u043a\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 <code>main<\/code> \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u043a \u0442\u043e\u043c\u0443 \u0434\u0438\u0441\u043f\u043b\u0435\u044e, \u0433\u0434\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043e\u043a\u043d\u043e:<\/p>\n<pre><code class=\"swift\">let screen = UIScreen.main        \/\/ \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u043e\u0442 \u0434\u0438\u0441\u043f\u043b\u0435\u0439let screen = windowScene.screen   \/\/ \u044d\u043a\u0440\u0430\u043d \u0442\u0435\u043a\u0443\u0449\u0435\u0439 scene<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u0432\u0451\u0440\u0441\u0442\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 view \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:<\/p>\n<pre><code class=\"swift\">let width = cardView.superview?.bounds.width ?? 0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 scene \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e <code>UIWindowScene<\/code>:<\/p>\n<pre><code class=\"swift\">let geometry = windowScene.effectiveGeometry<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>UIScreen<\/code> \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>windowScene.screen<\/code>. \u0418 <code>displayScale<\/code> \u043d\u0443\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u0443 \u044d\u043a\u0440\u0430\u043d\u0430 \u044d\u0442\u043e\u0439 scene, \u0430 \u043d\u0435 \u0443 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e <code>main<\/code>:<\/p>\n<pre><code class=\"swift\">let scale = windowScene.screen.scale<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0448\u0438\u0440\u0438\u043d\u044b \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<pre><code class=\"swift\">\/\/ \u043f\u043b\u043e\u0445\u043e \u043f\u0440\u0438 resize \u043e\u043a\u043d\u0430let cardWidth = UIScreen.main.bounds.width \/ 2<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041d\u043e \u0432 Split View \u0442\u0430 \u0436\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0435. \u0428\u0438\u0440\u0438\u043d\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u043b\u0435\u0436\u0438\u0442.<\/p>\n<p><a class=\"anchor\" name=\"orientation\" id=\"orientation\"><\/a><\/p>\n<h3>\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 layout<\/h3>\n<p>\u0412 iOS 27 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432 resizable-\u0441\u0440\u0435\u0434\u0430\u0445, \u0430 \u043d\u0435 \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"swift\">\/\/ preference, \u043d\u0435 \u043e\u043f\u043e\u0440\u0430 \u0434\u043b\u044f layout \u0432 resizable-\u0441\u0440\u0435\u0434\u0435override var supportedInterfaceOrientations: UIInterfaceOrientationMask {   .portrait}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 iPhone Mirroring \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0440\u0442\u0440\u0435\u0442\u043d\u043e\u0439, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0430\u0441\u0442\u044f\u043d\u0443\u043b \u043e\u043a\u043d\u043e \u0432 \u0448\u0438\u0440\u0438\u043d\u0443.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0435\u0442, \u0445\u0432\u0430\u0442\u0438\u0442 \u043b\u0438 \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a:<\/p>\n<pre><code class=\"swift\">\/\/ \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0435 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u0443 \u043e\u043a\u043d\u0430if UIDevice.current.orientation.isLandscape { ... }<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u0441\u0441\u0438\u0438 <a href=\"https:\/\/developer.apple.com\/videos\/play\/wwdc2026\/278\/\">Modernize your UIKit app (WWDC26-278).<\/a><\/p>\n<p>Size class \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c\u0438 <code>compact<\/code> \u0438 <code>regular<\/code>, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438. <code>compact<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u0435\u0441\u0442\u0430 \u043f\u043e \u044d\u0442\u043e\u0439 \u043e\u0441\u0438 \u043c\u0430\u043b\u043e. <code>regular<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u0435\u0441\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a.<\/p>\n<pre><code class=\"swift\">traitCollection.horizontalSizeClass  \/\/ .compact \u0438\u043b\u0438 .regulartraitCollection.verticalSizeClass<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043f\u043e\u043c\u0435\u0441\u0442\u044f\u0442\u0441\u044f \u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:<\/p>\n<pre><code class=\"swift\">if traitCollection.horizontalSizeClass == .regular { ... }<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u0443\u0436\u043d\u0430 \u043e\u0434\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0438\u043b\u0438 \u0434\u0432\u0435, \u043d\u0443\u0436\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 size class. \u0414\u043b\u044f \u0442\u043e\u0447\u043d\u044b\u0445 \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <code>userInterfaceIdiom<\/code> \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442:<\/p>\n<pre><code class=\"swift\">if traitCollection.userInterfaceIdiom == .phone { ... }<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>iPhone-only \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 <code>.phone<\/code> \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043d\u0430 iPad \u0438 \u0447\u0435\u0440\u0435\u0437 Mirroring, \u0445\u043e\u0442\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u0423 universal-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 idiom \u0431\u044b\u0432\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u0441\u0431\u043e\u0440\u043a\u0438.<\/p>\n<p><a class=\"anchor\" name=\"requires-fullscreen\" id=\"requires-fullscreen\"><\/a><\/p>\n<h4>UIRequiresFullScreen \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 resize<\/h4>\n<p>\u0412 iOS 27 \u044d\u0442\u043e\u0442 \u043a\u043b\u044e\u0447 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0439.<\/p>\n<pre><code class=\"xml\">&lt;key&gt;UIRequiresFullScreen&lt;\/key&gt;&lt;true\/&gt;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0439 resize \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438, \u0430 \u043d\u0435 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u043a\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043f\u043e\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u044f\u043d\u0435\u0442 \u043e\u043a\u043d\u043e.<\/p>\n<p>\u042d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a resizable-\u0441\u0440\u0435\u0434\u0430\u043c iOS 27, \u0430 \u043d\u0435 \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041e\u043d \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u043b\u044f \u0438\u0433\u0440, \u043d\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430 \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e <a href=\"https:\/\/developer.apple.com\/documentation\/bundleresources\/information-property-list\/uirequiresfullscreen\"><code>UIRequiresFullScreen<\/code><\/a> \u043f\u043e\u043a\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u0440\u0435\u0436\u0438\u043c\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0434\u0435\u043f\u0440\u0435\u043a\u0430\u0446\u0438\u044e \u0441 iOS 26. \u041d\u043e\u0432\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u043e <a href=\"https:\/\/developer.apple.com\/videos\/play\/wwdc2026\/278\/\">Modernize your UIKit app (WWDC26-278)<\/a> \u0438 <a href=\"https:\/\/developer.apple.com\/documentation\/technotes\/tn3192-migrating-your-app-from-the-deprecated-uirequiresfullscreen-key\">TN3192<\/a>, \u0430 \u043f\u043e\u0437\u0436\u0435 \u043f\u043e release notes SDK.<\/p>\n<p>\u0414\u043b\u044f \u0438\u0433\u0440 \u0438 canvas \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0439 \u043e\u043a\u043d\u0430. \u0414\u0430\u0436\u0435 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0439 resize \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u043a\u0430\u043a\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043c\u0438\u0440\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438 \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043f\u043e\u043b\u044f. \u0415\u0441\u043b\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043a\u043d\u043e\u043f\u043e\u043a.<\/p>\n<p>\u0418\u0433\u0440\u044b \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0441\u0430\u043c\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438. \u041e\u0431\u044a\u0451\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432\u0451\u0440\u0441\u0442\u043a\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0432\u043e\u0434\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u043a\u043d\u0430 \u043d\u0430 iPad \u0438\u043b\u0438 \u0432 Mirroring, \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043a Duo \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u0430.<\/p>\n<p><a class=\"anchor\" name=\"duo-screens\" id=\"duo-screens\"><\/a><\/p>\n<h2>iPhone Duo: \u044d\u043a\u0440\u0430\u043d\u044b, pose \u0438 SDK<\/h2>\n<p><a class=\"anchor\" name=\"two-displays\" id=\"two-displays\"><\/a><\/p>\n<h3>\u0414\u0432\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f, \u0440\u0430\u0437\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430<\/h3>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/520\/695\/2af\/5206952afffbdb1768bb3ba767be367b.jpg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/520\/695\/2af\/5206952afffbdb1768bb3ba767be367b.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/520\/695\/2af\/5206952afffbdb1768bb3ba767be367b.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.apple.com\/newsroom\/2026\/09\/apple-unveils-iphone-duo\/\">Apple Newsroom, \u0430\u043d\u043e\u043d\u0441 iPhone Duo<\/a><\/p>\n<p>\u0412 \u0441\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435, \u043a\u0430\u043a \u043d\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c iPhone. \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435. \u041f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u043e\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 size class \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c <code>regular<\/code> \u043f\u043e \u043e\u0431\u0435\u0438\u043c \u043e\u0441\u044f\u043c, \u043d\u043e layout \u043d\u0443\u0436\u043d\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u043c traits, \u0430 \u043d\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c regular \u043f\u043e \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<pre><code class=\"swift\">traitCollection.horizontalSizeClasstraitCollection.verticalSizeClass<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0440\u044f\u0434\u043e\u043c, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u0435\u043a \u0432 \u0441\u0442\u0440\u043e\u043a\u0435. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 size class Apple \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0432 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111461\/?time=30\">Prepare your app for iPhone Duo<\/a>.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0437\u0430\u043c\u0435\u0442\u043e\u043a \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u0442 \u043a \u0442\u0435\u043a\u0441\u0442\u0443 \u0437\u0430\u043c\u0435\u0442\u043a\u0438. \u041d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0432\u0430, \u0430 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u0430.<\/p>\n<p><a class=\"anchor\" name=\"poses\" id=\"poses\"><\/a><\/p>\n<h3>\u041a\u0430\u043a\u0438\u0435 pose \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c<\/h3>\n<p>Pose \u0443 Apple \u044d\u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0433\u0438\u0431\u0430, orientation \u044d\u0442\u043e portrait\/landscape. \u0412\u0441\u0435\u0433\u043e \u0438\u0445 6: 4 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0438 2 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">Pose<\/p>\n<\/th>\n<th>\n<p align=\"left\">Portrait<\/p>\n<\/th>\n<th>\n<p align=\"left\">Landscape<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Closed (\u0441\u043b\u043e\u0436\u0435\u043d)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Open (\u0440\u0430\u0441\u043a\u0440\u044b\u0442)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439, \u043e\u0434\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439, \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Book (\u043a\u0430\u043a \u043a\u043d\u0438\u0433\u0430)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0433\u0438\u0431 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Tabletop (\u043d\u0430 \u0441\u0442\u043e\u043b\u0435)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0438\u0436\u043d\u044f\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043b\u0435\u0436\u0438\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u0435\u0440\u0445 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043d\u0438\u0437 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/294\/bd6\/3a9\/294bd63a9dd77967c97ced4610937b6e.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/294\/bd6\/3a9\/294bd63a9dd77967c97ced4610937b6e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/294\/bd6\/3a9\/294bd63a9dd77967c97ced4610937b6e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: \u043a\u0430\u0434\u0440 \u0438\u0437 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111460\/\">Design for iPhone Duo<\/a>.<\/p>\n<p>\u041a\u0430\u043a \u044d\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u0434\u0435<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0451\u0440\u0441\u0442\u043a\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u043e\u0437\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u0435\u043d\u044f\u0435\u0442 size class \u0438 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u043e\u043a\u043d\u0430, \u0430 layout \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e traits.<\/p>\n<p>\u041a\u043e\u043d\u0442\u0435\u043d\u0442 \u0443 \u0441\u0433\u0438\u0431\u0430 \u0438 \u0443 \u043a\u0430\u043c\u0435\u0440 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>reserved regions<\/code> \u0432 iOS 27.1. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c UI \u0443 \u0441\u0433\u0438\u0431\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 tabletop \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430\u0432\u0435\u0440\u0445, \u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043d\u0438\u0437, \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>ArrangementView<\/code> \/ <code>UIArrangementViewController<\/code>. \u0421\u0430\u043c\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0430\u043a \u043d\u0435 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442.<\/p>\n<pre><code class=\"swift\">\/\/ iOS 27.1: \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441\u0433\u0438\u0431\u0430\/\/ SwiftUI: reserved regions \u0432 GeometryProxy\/\/ UIKit: UIViewReservedRegion<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 book \u0438 tabletop Apple \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0432 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111463\/\">Strike a pose with adaptive layouts on iPhone Duo<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"sdk-version\" id=\"sdk-version\"><\/a><\/p>\n<h4>\u0427\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 SDK<\/h4>\n<p>\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 SDK, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043e\u0431\u0440\u0430\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041d\u0438\u0436\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043f\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111461\/\">Prepare your app for iPhone Duo<\/a>.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">SDK \u0441\u0431\u043e\u0440\u043a\u0438<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u0438\u0436\u0435 iOS 27<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f, \u043d\u043e \u043d\u0435 \u0437\u0430\u0439\u043c\u0451\u0442 \u0432\u0441\u044e \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u0434\u0438\u0441\u043f\u043b\u0435\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">iOS 27 SDK<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u0441\u044f, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435 \u0434\u043e\u0439\u0434\u0451\u0442 \u0434\u043e \u043a\u0440\u0430\u044f \u044d\u043a\u0440\u0430\u043d\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">iOS 27.1 SDK<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u043e\u0439\u0434\u0451\u0442 \u0434\u043e \u043a\u0440\u0430\u044f \u044d\u043a\u0440\u0430\u043d\u0430. \u0423 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u0432 navigation bar \u0438 toolbar \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u043d\u0435\u043b\u0435\u0439<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412\u0435\u0440\u0441\u0438\u044f SDK \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0435 \u0440\u0430\u0432\u043d\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u041e\u0421. \u041d\u043e\u0432\u044b\u0435 API \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0421\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 iOS 27.1 SDK \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e deployment target \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u043e 27.1.<\/p>\n<p>\u0414\u043b\u044f \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e UX \u043d\u0430 Duo \u0443\u0434\u043e\u0431\u043d\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u0441 iOS 27.1 SDK. \u041d\u043e \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0430 \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442 \u0432\u0451\u0440\u0441\u0442\u043a\u0443, \u0435\u0441\u043b\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430 \u0438\u043b\u0438 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043e\u043a\u043d\u043e.<\/p>\n<pre><code class=\"swift\">\/\/ \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438let width = UIScreen.main.bounds.widthview.layoutMargins = UIEdgeInsets(top: 16, left: 16, bottom: 16, right: 16)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Edge-to-edge \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0444\u043e\u043d \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u043e \u043a\u0440\u0430\u044f \u044d\u043a\u0440\u0430\u043d\u0430. \u042d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0442\u0435\u043a\u0441\u0442 \u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u043a\u043b\u0430\u0441\u0442\u044c \u0432\u043f\u043b\u043e\u0442\u043d\u0443\u044e \u043a \u043a\u0440\u0430\u044e. \u041a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0441 \u0443\u0447\u0451\u0442\u043e\u043c safe area \u0438 layout margins.<\/p>\n<pre><code class=\"swift\">\/\/ UIKit: \u0444\u043e\u043d \u043d\u0430 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d, \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 safe areaview.backgroundColor = .systemBackgroundlet safeFrame = view.bounds.inset(by: view.safeAreaInsets)\/\/ SwiftUI: \u0444\u043e\u043d edge-to-edge, \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 safe areaZStack {    Color(.systemBackground).ignoresSafeArea()    content}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430 iOS 27.1 \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u0447\u0430\u0441\u0442\u043e \u0430\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b: safe area \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0431\u043e\u043a\u043e\u0432\u044b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438, \u0430 <code>reservedRegions<\/code> &#8212; \u0441\u0433\u0438\u0431 \u0438 \u043a\u0430\u043c\u0435\u0440\u044b. \u0421\u043b\u0435\u0432\u0430 \u0438 \u0441\u043f\u0440\u0430\u0432\u0430 \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0430 \u043d\u0435 \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443.<\/p>\n<p><a class=\"anchor\" name=\"system-or-code\" id=\"system-or-code\"><\/a><\/p>\n<h2>\u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0430 \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435<\/h2>\n<p><a class=\"anchor\" name=\"containers\" id=\"containers\"><\/a><\/p>\n<h3>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432\u043e\u0437\u044c\u043c\u0443\u0442 \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u0441\u0435\u0431\u044f<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e, \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u044e \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e \u0441 \u043d\u0443\u043b\u044f \u043d\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f. \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0443\u0436\u0435 \u0443\u043c\u0435\u044e\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0417\u0430\u0434\u0430\u0447\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">SwiftUI<\/p>\n<\/th>\n<th>\n<p align=\"left\">UIKit<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u044d\u043a\u0440\u0430\u043d\u0430\u043c\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>NavigationStack<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>UINavigationController<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>NavigationSplitView<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>UISplitViewController<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>TabView<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>UITabBarController<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u0434\u0430\u0447. \u041e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 API \u043e\u043d\u0430 \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u0435\u0442.<\/p>\n<p><code>NavigationSplitView<\/code> \u0438 <code>UISplitViewController<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0440\u044f\u0434\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u0441\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0438 \u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0438\u0445 \u043f\u0440\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0438 \u0448\u0438\u0440\u0438\u043d\u044b. <code>NavigationStack<\/code> \u0441\u0430\u043c \u0432 split \u043d\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0434\u0435\u0442\u0430\u043b\u044c \u0440\u044f\u0434\u043e\u043c, split-\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443. \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c stack \u043f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 Duo \u043d\u0435 \u0441\u0442\u043e\u0438\u0442.<\/p>\n<pre><code class=\"swift\">\/\/ \u043d\u0435 \u0442\u0430\u043a: \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u043f\u043e\u0434 Duoif isDuo {    showSplitView()} else {    NavigationStack { ... }}\/\/ \u0442\u0430\u043a: \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440NavigationSplitView {    NotesList()} detail: {    NoteDetail()}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0448\u0438\u0440\u0438\u043d\u0443 \u043e\u043a\u043d\u0430 \u0438 <code>horizontalSizeClass<\/code>. \u041d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 Duo \u043f\u0440\u0438 regular width split \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438, \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u043f\u0440\u0438 compact width \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430.<\/p>\n<pre><code class=\"swift\">\/\/ UIKit: \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043flet splitVC = UISplitViewController(style: .doubleColumn)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/104\/e03\/6be\/104e036be96490b51e274f75a2d79c93.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/104\/e03\/6be\/104e036be96490b51e274f75a2d79c93.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/104\/e03\/6be\/104e036be96490b51e274f75a2d79c93.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: Apple, <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111460\/\">Design for iPhone Duo<\/a>, ~7:48.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/3d8\/61e\/211\/3d861e2117a442585027ae4ef8080452.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/3d8\/61e\/211\/3d861e2117a442585027ae4ef8080452.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/3d8\/61e\/211\/3d861e2117a442585027ae4ef8080452.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: Apple, Design for iPhone Duo, ~8:27.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/59d\/bc5\/941\/59dbc5941a4f797630dbf6456cc02a4c.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/59d\/bc5\/941\/59dbc5941a4f797630dbf6456cc02a4c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/59d\/bc5\/941\/59dbc5941a4f797630dbf6456cc02a4c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: Apple, Design for iPhone Duo, ~8:13.<\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u0442 <code>NavigationStack<\/code> \u043d\u0430 split \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0412\u044b\u0431\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438: \u043e\u0434\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0430 (<code>NavigationStack<\/code>) \u0438\u043b\u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 (<code>NavigationSplitView<\/code> \/ <code>UISplitViewController<\/code>). \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0430 Duo \u0435\u0441\u0442\u044c \u0432 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111460\/\">Design for iPhone Duo<\/a> \u0438 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111461\/\">Prepare your app for iPhone Duo<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"toolbar\" id=\"toolbar\"><\/a><\/p>\n<h3>\u041a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 toolbar \u043c\u0435\u043d\u044f\u044e\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0441 iOS 27.1 SDK \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043f\u0430\u043d\u0435\u043b\u0435\u0439 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0443 \u0431\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u043a\u0440\u0430\u044f. \u042d\u0442\u043e \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u0437 Tech Talks, \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 SDK. \u0422\u0430\u043a\u043e\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0435\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u0435\u0440\u0436\u0438\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432 \u0440\u0443\u043a\u0430\u0445. \u041f\u0440\u0438 \u043f\u043e\u0440\u0442\u0440\u0435\u0442\u043d\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438. \u0420\u0435\u0447\u044c \u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0430 \u043d\u0435 \u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 <code>interfaceOrientation<\/code>.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/32e\/e3c\/887\/32ee3c8872fd468baee36008cc24c1fd.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/32e\/e3c\/887\/32ee3c8872fd468baee36008cc24c1fd.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/32e\/e3c\/887\/32ee3c8872fd468baee36008cc24c1fd.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p> \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: Apple, <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111462\/\">Raise the bar with iPhone Duo<\/a>. <\/p>\n<p>\u0414\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b \u043f\u0430\u043d\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. \u0412 SwiftUI \u044d\u0442\u043e <code>.toolbar<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 <code>NavigationStack<\/code>, \u0432 UIKit \u044d\u0442\u043e \u043f\u0430\u043d\u0435\u043b\u0438 <code>UINavigationController<\/code> \u0438 <code>UITabBarController<\/code>.<\/p>\n<pre><code class=\"swift\">\/\/ \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 toolbar \u2014 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u043c layout.toolbar {    ToolbarItem(placement: .primaryAction) {        Button(\"Share\", systemImage: \"square.and.arrow.up\") { }    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c <code>UIToolbar<\/code>, <code>UINavigationBar<\/code> \u0438\u043b\u0438 <code>UITabBar<\/code> \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e view, \u0438\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0451\u0442. \u042d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111462\/\">Raise the bar with iPhone Duo<\/a>.<\/p>\n<pre><code class=\"swift\">\/\/ \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u0432\u043e view \u2014 \u0432\u043d\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e layoutlet bar = UINavigationBar()view.addSubview(bar)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0430\u0436\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c toolbar \u0432 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043d\u0435 \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b. \u0418\u043a\u043e\u043d\u043a\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0442\u0430\u044e\u0442 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e. \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u0448\u0438\u0440\u043e\u043a\u0438\u0435 custom views \u0432\u0440\u043e\u0434\u0435 <code>UISegmentedControl<\/code> \u0447\u0430\u0449\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0443\u0437\u043a\u0443\u044e \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c.<\/p>\n<p>\u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u0441\u0432\u043e\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0445: \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, \u0435\u0441\u043b\u0438 \u0447\u0430\u0441\u0442\u044c \u0443\u0448\u043b\u0430 \u0432 overflow, \u0438 \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u0438\u043a\u043e\u043d\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0434\u043b\u044f accessibility. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 Apple \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0432 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111462\/\">Raise the bar with iPhone Duo<\/a><\/p>\n<p><a class=\"anchor\" name=\"popovers\" id=\"popovers\"><\/a><\/p>\n<h3>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/h3>\n<p><code>Alert<\/code>, <code>sheet<\/code>, <code>popover<\/code> \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438 <code>reserved regions<\/code> \u0443 \u0441\u0433\u0438\u0431\u0430 \u0438 \u043a\u0430\u043c\u0435\u0440. \u041c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e \u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043a\u0430\u0437\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u0412\u0451\u0440\u0441\u0442\u043a\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 <code>sheet<\/code> \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430 \u0432\u0430\u0441 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u0442.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/ab0\/695\/dbb\/ab0695dbba6f6777deeb1ad1d2ea6f7a.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/ab0\/695\/dbb\/ab0695dbba6f6777deeb1ad1d2ea6f7a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/ab0\/695\/dbb\/ab0695dbba6f6777deeb1ad1d2ea6f7a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: Apple, <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111460\/\">Design for iPhone Duo<\/a>, ~2:25.<\/p>\n<pre><code class=\"swift\">\/\/ \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 sheet: \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0438 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.sheet(isPresented: $showSettings) {    SettingsView()}\/\/ UIKit: \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 popoverbutton.popoverPresentationController?.sourceView = buttonpresent(popoverVC, animated: true)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u043e\u0432\u0435\u0440\u043b\u0435\u0435\u0432, \u043c\u0435\u043d\u044e \u0438 \u043c\u043e\u0434\u0430\u043b\u043e\u043a \u0442\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0415\u0441\u043b\u0438 \u043c\u0435\u043d\u044e \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443 \u044d\u043a\u0440\u0430\u043d\u0430, \u043d\u0430 Duo \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043d\u0430 \u0441\u0433\u0438\u0431.<\/p>\n<pre><code class=\"swift\">\/\/ \u043f\u043b\u043e\u0445\u043e: \u0446\u0435\u043d\u0442\u0440 \u044d\u043a\u0440\u0430\u043d\u0430, \u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 \u0441\u0433\u0438\u0431\u0430.overlay {    CustomMenu()        .position(x: geo.size.width \/ 2, y: geo.size.height \/ 2)}\/\/ \u043b\u0443\u0447\u0448\u0435: \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a safe area \u0438 reserved regions (iOS 27.1).overlay(alignment: .topTrailing) {    CustomMenu()        .padding(.top, geo.safeAreaInsets.top)        .padding(.trailing, reservedTrailingInset(from: geo))}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0443 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0448\u0435\u043a: \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u043b\u0438 \u0441\u0433\u0438\u0431 \u0438 \u043a\u0430\u043c\u0435\u0440\u0443, \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u0432 \u0437\u043e\u043d\u0435 \u0434\u043e\u0441\u044f\u0433\u0430\u0435\u043c\u043e\u0441\u0442\u0438, \u043d\u0435 \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u043c\u0435\u043d\u044e \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 pose. \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 <code>sheet<\/code> \u0438 <code>popover<\/code> \u0441\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u0441\u0433\u0438\u0431\u0430 \u0441\u0430\u043c\u0438. \u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 overlay \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e safe area \u0438 <code>reserved regions<\/code>, \u0430 \u043d\u0435 \u0446\u0435\u043d\u0442\u0440\u0430 <code>UIScreen<\/code>.<\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e \u0441\u0433\u0438\u0431 \u0438 <code>reserved regions<\/code> Apple \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0432 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111463\/\">Strike a pose with adaptive layouts on iPhone Duo<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"safe-area\" id=\"safe-area\"><\/a><\/p>\n<h3>\u0421\u0432\u043e\u044f \u0432\u0451\u0440\u0441\u0442\u043a\u0430 \u0438 safe area<\/h3>\n<p>Safe area \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c view. \u041d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c iPhone <code>safeAreaInsets.left<\/code> \u0438 <code>safeAreaInsets.right<\/code> \u0447\u0430\u0441\u0442\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442, \u0438 \u043a\u043e\u0434 \u0441 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u043c\u0438 \u043e\u0442\u0441\u0442\u0443\u043f\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u0430 Duo \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u043f\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c \u0440\u0430\u0437\u043d\u044b\u0435: \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432\u044b\u043d\u043e\u0441\u0438\u0442 navigation bar \u0438 toolbar \u043d\u0430 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043a\u0440\u0430\u0439, \u043f\u043b\u044e\u0441 \u043a\u0430\u043c\u0435\u0440\u0430 \u0438 \u0441\u0433\u0438\u0431 \u0434\u0430\u044e\u0442 <code>reserved regions<\/code>.<\/p>\n<p>\u0410\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 landscape. \u041e\u043d\u0430 \u0435\u0441\u0442\u044c \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435, \u0433\u0434\u0435 \u043f\u0430\u043d\u0435\u043b\u0438 \u0441\u0442\u043e\u044f\u0442 \u0441\u0431\u043e\u043a\u0443, \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0432 landscape, \u0432 Split View \u0438 \u043f\u0440\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u043c \u0441\u0433\u0438\u0431\u0435, \u043a\u043e\u0433\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u0445\u043e\u0434\u044f\u0442 \u043e\u0442 \u0441\u0433\u0438\u0431\u0430.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/022\/2a7\/528\/0222a75289f2b5aa73a543130a0d941d.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/022\/2a7\/528\/0222a75289f2b5aa73a543130a0d941d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/022\/2a7\/528\/0222a75289f2b5aa73a543130a0d941d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: Apple, <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111460\/\">Design for iPhone Duo<\/a>, ~4:23.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0448\u0438\u0440\u0438\u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0448\u0438\u0440\u0438\u043d\u0430 view \u043c\u0438\u043d\u0443\u0441 \u0443\u0434\u0432\u043e\u0435\u043d\u043d\u044b\u0439 \u043b\u0435\u0432\u044b\u0439 \u043e\u0442\u0441\u0442\u0443\u043f, \u043d\u0430 Duo \u043f\u0440\u0430\u0432\u044b\u0439 \u043a\u0440\u0430\u0439 \u0443\u0439\u0434\u0451\u0442 \u043f\u043e\u0434 \u043f\u0430\u043d\u0435\u043b\u044c.<\/p>\n<pre><code class=\"swift\">\/\/ \u043f\u043b\u043e\u0445\u043e: \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u044flet hInset = view.safeAreaInsets.leftlet contentWidth = view.bounds.width - hInset * 2\/\/ \u0442\u0430\u043a: \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043elet insets = view.safeAreaInsetslet contentWidth = view.bounds.width - insets.left - insets.right\/\/ SwiftUIGeometryReader { geo in    let insets = geo.safeAreaInsets    Content()        .frame(width: geo.size.width - insets.leading - insets.trailing)}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442 \u0440\u0430\u0441\u0447\u0451\u0442\u044b \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 view. \u0415\u0441\u043b\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430 \u0438\u043b\u0438 overlay \u0437\u0430\u0434\u0430\u0451\u0442 \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u043e <code>bounds<\/code> \u0438 <code>safeAreaInsets<\/code> \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0439 view, \u0430 \u043d\u0435 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0441 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<p><a class=\"anchor\" name=\"split-view\" id=\"split-view\"><\/a><\/p>\n<h3>Split View \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043d<\/h3>\n<p>\u041d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 Duo \u0434\u0432\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0441\u0442\u043e\u044f\u0442\u044c \u0440\u044f\u0434\u043e\u043c. \u042d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 Split View: \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0451 \u043e\u043a\u043d\u043e \u0438 \u0441\u0432\u043e\u044f \u0434\u043e\u043b\u044f \u0448\u0438\u0440\u0438\u043d\u044b. \u041f\u0430\u043d\u0435\u043b\u0438 navigation \u0438 toolbar \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b, \u0430 \u043d\u0435 \u043a \u0446\u0435\u043d\u0442\u0440\u0443 \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/7e5\/30a\/cba\/7e530acbad515a1102289781aeb579d6.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/7e5\/30a\/cba\/7e530acbad515a1102289781aeb579d6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/7e5\/30a\/cba\/7e530acbad515a1102289781aeb579d6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 Split View: \u0434\u0432\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0432\u043e\u044f \u0448\u0438\u0440\u0438\u043d\u0430. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: Apple, <\/em><a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111466\/?time=183\"><em>Design for iPhone Duo<\/em><\/a><em>.<\/em><\/p>\n<p>\u0421\u043b\u043e\u0432\u043e split \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0438 \u0432 <code>NavigationSplitView<\/code> \u0434\u043b\u044f SwiftUI, \u0438 \u0432 <code>UISplitViewController<\/code> \u0434\u043b\u044f UIKit, \u0438 \u044d\u0442\u0438 \u0432\u0435\u0449\u0438 \u0447\u0430\u0441\u0442\u043e \u043f\u0443\u0442\u0430\u044e\u0442. \u0422\u0430\u043c \u0440\u0435\u0447\u044c \u0443\u0436\u0435 \u043f\u0440\u043e \u043e\u0434\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435: sidebar, \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0434\u0435\u0442\u0430\u043b\u044c \u0436\u0438\u0432\u0443\u0442 \u0432 \u043e\u0434\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u0438 \u0434\u0435\u043b\u044f\u0442 \u0448\u0438\u0440\u0438\u043d\u0443 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439. \u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u0440\u0443\u0433\u0430\u044f, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0442\u043e \u0436\u0435. \u041a\u043e\u043b\u043e\u043d\u043a\u0438, \u0444\u043e\u0440\u043c\u044b \u0438 \u043f\u0430\u043d\u0435\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0436\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u0448\u0438\u0440\u0438\u043d\u0443, \u0430 \u043d\u0435 \u043f\u043e\u0434 \u043f\u043e\u043b\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/9cb\/9b0\/410\/9cb9b04102c18b360a092de186d4eb04.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/9cb\/9b0\/410\/9cb9b04102c18b360a092de186d4eb04.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/9cb\/9b0\/410\/9cb9b04102c18b360a092de186d4eb04.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><em>NavigationSplitView: \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: Apple, <\/em><a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111466\/?time=120\"><em>Design for iPhone Duo<\/em><\/a><em>.<\/em><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041d\u0430 Duo \u0443\u0437\u043a\u043e\u0435 \u043e\u043a\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0431\u0435\u0437 \u0441\u043e\u0441\u0435\u0434\u0430: \u043f\u0440\u0438 Split View \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u043f\u0440\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0438 \u043e\u043a\u043d\u0430 \u043d\u0430 iPad \u0438\u043b\u0438 \u0432 Stage Manager. \u041e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0435: <code>horizontalSizeClass<\/code> \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b <code>NavigationSplitView<\/code> \u0438\u043b\u0438 <code>UISplitViewController<\/code>. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439 Duo \u043d\u0435 \u043d\u0443\u0436\u043d\u0430.<\/p>\n<pre><code class=\"swift\">\/\/ \u041e\u0434\u0438\u043d layout \u043d\u0430 \u0432\u0441\u0435 \u0448\u0438\u0440\u0438\u043d\u044b \u043e\u043a\u043d\u0430, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e fullscreen@Environment(\\.horizontalSizeClass) private var horizontalSizeClassvar body: some View {    if horizontalSizeClass == .regular {        NavigationSplitView { sidebar } detail: { detail }    } else {        NavigationStack { list }    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0415\u0441\u0442\u044c \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043e\u043a\u043d\u0430\u043c\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. iOS \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0435 \u043e\u043a\u043d\u043e \u0442\u043e\u0439 \u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u0438\u043b\u0438 \u0441\u043f\u0438\u0441\u043a\u0430, \u0435\u0441\u043b\u0438 \u0432 Info.plist \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 scene. \u0422\u043e\u0433\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0438\u0442\u044c \u044f\u0432\u043d\u043e:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0427\u0442\u043e<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0413\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u0440\u0438\u043c\u0435\u0440<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0431\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">App-level store, iCloud, \u0431\u0430\u0437\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u0441\u0435 \u0437\u0430\u043c\u0435\u0442\u043a\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u043a\u043d\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f scene<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u0442\u043a\u0430, \u0444\u0438\u043b\u044c\u0442\u0440, \u043f\u0443\u0442\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0434\u0435\u0442\u0430\u043b\u044c \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c.<\/p>\n<pre><code class=\"swift\">\/\/ \u041e\u0431\u0449\u0435\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u043a\u043e\u043d@mainstruct NotesApp: App {    @State private var store = NotesStore() \/\/ \u043e\u0434\u043d\u0430 \u0431\u0430\u0437\u0430 \u0437\u0430\u043c\u0435\u0442\u043e\u043a    var body: some Scene {        WindowGroup {            NotesRootView()                .environment(store)        }    }}\/\/ \u0421\u0432\u043e\u0451 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u043d\u0430struct NotesRootView: View {    @Environment(NotesStore.self) private var store    @SceneStorage(\"selectedNoteID\") private var selectedNoteID: String?    @SceneStorage(\"listFilter\") private var listFilter = ListFilter.all    \/\/ navigation path \u2014 \u0442\u043e\u0436\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 scene, \u043d\u0435 \u0432 singleton}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f UIKit \u0442\u043e \u0436\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435: <code>UIWindowScene<\/code> \u0438 <code>scene(_:willConnectTo:)<\/code> \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u043e\u043a\u043d\u043e, \u043e\u0431\u0449\u0438\u0439 <code>NotesStore<\/code> \u0432\u043d\u0435 scene, <code>selectedNoteID<\/code> \u0438 navigation stack \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 scene.<\/p>\n<p><a class=\"anchor\" name=\"api\" id=\"api\"><\/a><\/p>\n<h2>API \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 Duo<\/h2>\n<p>\u041e\u0441\u043d\u043e\u0432\u043e\u0439 \u0432\u0451\u0440\u0441\u0442\u043a\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f size class \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0412 iOS 27.1 \u043a \u043d\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0433\u0438\u0431\u043e\u043c, \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0434\u0432\u0443\u043c\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u044f\u043c\u0438. \u0427\u0430\u0441\u0442\u044c API \u043d\u0438\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e Duo \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435: \u043d\u0435 \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u043e\u0432\u044b\u0435 API 27.1.<\/p>\n<p><a class=\"anchor\" name=\"reserved-regions\" id=\"reserved-regions\"><\/a><\/p>\n<h3>Reserved regions: \u0433\u0434\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u0433\u0438\u0431 \u0438 \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442<\/h3>\n<p><code>safeAreaInsets<\/code> \u0437\u0430\u0434\u0430\u044e\u0442 \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u043e\u0442 \u043a\u0440\u0430\u0451\u0432 safe area. \u0421\u0433\u0438\u0431 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 view, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u043a\u0440\u0430\u044f. \u0414\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b reserved regions. \u041e\u043d\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u043c\u0435\u0441\u0442\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0451\u0440\u0441\u0442\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u043d\u043e \u0440\u0430\u0437\u0440\u044b\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0442\u0435\u043a\u0441\u0442 \u0438\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e \u0441\u0433\u0438\u0431\u0443 \u043e\u043d\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0413\u0434\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">safe area (<code>safeAreaInsets<\/code>)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0437\u043e\u043d\u0430 \u043e\u0442 \u043a\u0440\u0430\u0451\u0432 view: \u0432\u044b\u0440\u0435\u0437, Dynamic Island, \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 Home, \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u0441\u0435 iPhone. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u0437\u0430\u043b\u0435\u0437\u0442\u044c \u043f\u043e\u0434 \u0447\u0435\u043b\u043a\u0443<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>.division<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0435\u043b\u0438\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u043e\u0431\u044b\u0447\u043d\u043e \u0432 \u043c\u0435\u0441\u0442\u0435 \u0441\u0433\u0438\u0431\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">Duo. \u0410\u043a\u0442\u0438\u0432\u043d\u0430 \u043f\u0440\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u043c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043d\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u0448\u0438\u0440\u0438\u043d\u0443<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>.occlusion<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0431\u043b\u0430\u0441\u0442\u044c, \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442 (\u043a\u0430\u043c\u0435\u0440\u0430 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435)<\/p>\n<\/td>\n<td>\n<p align=\"left\">Duo. \u0412\u043d\u0435\u0448\u043d\u044f\u044f \u043a\u0430\u043c\u0435\u0440\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f under-display FaceTime \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u0430 \u043a\u0430\u043c\u0435\u0440\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0430. \u042d\u0442\u043e \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 <code>AVCaptureDevice<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041d\u0430 iPhone \u0441 \u0432\u044b\u0440\u0435\u0437\u043e\u043c \u0432\u0451\u0440\u0441\u0442\u043a\u0443 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0441\u0442\u0440\u043e\u044f\u0442 \u043e\u0442 safe area: \u0432\u0435\u0440\u0445\u043d\u0438\u0439 inset \u043e\u0442\u043e\u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043e\u0442 \u0447\u0435\u043b\u043a\u0438 \u0438\u043b\u0438 Dynamic Island. Reserved regions \u044d\u0442\u043e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043d\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0442 \u0438 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442. \u041d\u0430 Duo safe area \u0438 reserved regions \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432\u043c\u0435\u0441\u0442\u0435: insets \u0437\u0430\u0434\u0430\u044e\u0442 \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u043e\u0442 \u043a\u0440\u0430\u0451\u0432 \u043e\u043a\u043d\u0430, \u0430 <code>.division<\/code> \u0438 <code>.occlusion<\/code> \u0443\u0442\u043e\u0447\u043d\u044f\u044e\u0442 \u0441\u0433\u0438\u0431 \u0438 \u043a\u0430\u043c\u0435\u0440\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438.<\/p>\n<p>\u0412 SwiftUI \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0447\u0438\u0442\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 <code>GeometryProxy.reservedRegions(kind:)<\/code>, \u0432 UIKit \u0447\u0435\u0440\u0435\u0437 <code>UIView<\/code>. \u0418\u0445 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0432\u0451\u0440\u0441\u0442\u043a\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442.<\/p>\n<pre><code class=\"swift\">\/\/ \u041e\u0431\u044b\u0447\u043d\u044b\u0439 iPhone: \u0432\u044b\u0440\u0435\u0437, Dynamic Island, home indicatorlet topInset = geometry.safeAreaInsets.top\/\/ Duo: \u0441\u0433\u0438\u0431 \u0438 \u043a\u0430\u043c\u0435\u0440\u044b \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441let folds = geometry.reservedRegions(kind: .division)let cameras = geometry.reservedRegions(kind: .occlusion)let foldFrames = folds.map(\\.frame)\/\/ UIKit \u2014 \u0442\u043e\u0442 \u0436\u0435 \u0441\u043c\u044b\u0441\u043blet folds = view.reservedRegions(kind: .division)let cameras = view.reservedRegions(kind: .occlusion)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u043e, \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441\u0433\u0438\u0431\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u0415\u0441\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043d\u0438\u0438 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u043d\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0441\u0435\u0433\u0434\u0430 \u0447\u0451\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0441\u0435\u0442\u043a\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 <code>.includeInactive<\/code>:<\/p>\n<pre><code class=\"swift\">let folds = geometry.reservedRegions(kind: .division, options: .includeInactive)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"arrangement-view\" id=\"arrangement-view\"><\/a><\/p>\n<h3>ArrangementView: \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430<\/h3>\n<p>\u041d\u0430 iPad \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0443\u0436\u0435 \u0434\u0430\u0451\u0442 <code>NavigationSplitView<\/code> \u0438\u043b\u0438 <code>UISplitViewController<\/code>: \u043f\u0440\u0438 <code>regular<\/code> horizontal size class sidebar \u0438 detail \u0441\u0442\u043e\u044f\u0442 \u0440\u044f\u0434\u043e\u043c, \u043f\u0440\u0438 <code>compact<\/code> \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0438 \u0441\u0442\u0435\u043a \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438. \u041d\u0430 Duo \u044d\u0442\u0430 \u0441\u0445\u0435\u043c\u0430 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0438 \u0434\u0435\u0442\u0430\u043b\u0438.<\/p>\n<p><code>ArrangementView<\/code> \u0432 SwiftUI \u0438 <code>UIArrangementViewController<\/code> \u0432 UIKit \u0440\u0435\u0448\u0430\u044e\u0442 \u0434\u0440\u0443\u0433\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443: \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0440\u043e\u0432\u043d\u043e \u0434\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0441\u0433\u0438\u0431\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438. \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u0430 \u0441\u043b\u043e\u0442\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0438\u0434\u043d\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u041f\u0440\u0438 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0435 \u043c\u0435\u0441\u0442\u0430 \u0438\u043b\u0438 \u0432 \u043d\u0435\u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u043f\u043e\u0437\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0421\u0442\u0438\u043b\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>.split<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 \u0440\u044f\u0434\u043e\u043c. \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 layout \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0441\u0433\u0438\u0431\u0435. \u041f\u0440\u0438 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0435 \u043c\u0435\u0441\u0442\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0432\u0443\u0445<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>.overlay<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u043b\u043e\u043a\u0438 \u043d\u0430\u0441\u043b\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0433\u0438\u0431\u0435, \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u0438\u0435 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 \u0441\u0442\u043e\u044f\u0442 \u0432 <code>HStack<\/code> \u0438\u043b\u0438 <code>VStack<\/code>, \u043d\u0430\u0447\u0438\u043d\u0430\u0439\u0442\u0435 \u0441\u043e \u0441\u0442\u0438\u043b\u044f <code>.split<\/code>. \u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430\u0441\u043b\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>ZStack<\/code>, \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 <code>.overlay<\/code>. \u042d\u0442\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440, \u0430 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0430 \u0441\u0442\u0435\u043a\u0430: <code>ArrangementView<\/code> \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043d\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 <code>HStack<\/code> \u0438\u043b\u0438 <code>ZStack<\/code> \u043e\u0434\u0438\u043d \u0432 \u043e\u0434\u0438\u043d.<\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u043e\u0442 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0431\u044b\u043b \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c \u0438 \u0431\u0435\u0437 \u0441\u043e\u0441\u0435\u0434\u0430. \u0412\u0442\u043e\u0440\u043e\u0439 \u0431\u043b\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f, \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043b\u043e\u043c\u0430\u0442\u044c\u0441\u044f. \u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u0430, \u043d\u043e UI \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u043e\u0442\u0430 \u043b\u0443\u0447\u0448\u0435 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c view. \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e <code>ArrangementView<\/code> \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442.<\/p>\n<p>\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Apple \u043e\u043d \u0441\u0442\u043e\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 <code>NavigationStack<\/code>. \u0421\u043d\u0430\u0440\u0443\u0436\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f <code>NavigationSplitView<\/code>, <code>TabView<\/code> \u0438\u043b\u0438 <code>UISplitViewController<\/code>. \u0412\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 <code>ArrangementView<\/code> \u0435\u0449\u0451 \u043e\u0434\u0438\u043d split-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438\u043b\u0438 \u043a\u043b\u0430\u0441\u0442\u044c \u0435\u0433\u043e \u0432 <code>List<\/code> \u0438 <code>ScrollView<\/code> Apple \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442.<\/p>\n<pre><code class=\"swift\">\/\/ \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u0434\u0432\u0430 \u0441\u043b\u043e\u0442\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u0433\u0438\u0431\u0430 \u0432\u043d\u0443\u0442\u0440\u0438NavigationStack {    ArrangementView(style: .split) {        PrimaryPane()    } secondary: {        SecondaryPane()    }}\/\/ UIKit: \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u2014 split\/navigation \u0441\u043d\u0430\u0440\u0443\u0436\u0438let arrangement = UIArrangementViewController(    style: .split,    primary: primaryVC,    secondary: secondaryVC)navigationController?.setViewControllers([arrangement], animated: false)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0427\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u043f\u0438\u0441\u043e\u043a + \u0434\u0435\u0442\u0430\u043b\u044c, sidebar + content<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>NavigationSplitView<\/code> \/ <code>UISplitViewController<\/code> (iPad \u0438 Duo)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u0432\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u0433\u0438\u0431\u0430 (\u0438\u0433\u0440\u0430, canvas, \u0441\u0432\u043e\u044f \u043f\u0430\u043d\u0435\u043b\u044c)<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>ArrangementView<\/code> \/ <code>UIArrangementViewController<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0431\u0445\u043e\u0434 \u0441\u0433\u0438\u0431\u0430 \u0432 \u0440\u0443\u0447\u043d\u043e\u043c layout \u0431\u0435\u0437 \u043f\u0430\u0440\u044b \u0441\u043b\u043e\u0442\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>reservedRegions<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><a class=\"anchor\" name=\"hinge\" id=\"hinge\"><\/a><\/p>\n<h3>\u0423\u0433\u043e\u043b \u0441\u0433\u0438\u0431\u0430: \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432<\/h3>\n<p>\u0417\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0441\u0433\u0438\u0431\u0430 \u0441\u043b\u0435\u0434\u044f\u0442 <code>onHingeChange<\/code> \u0432 SwiftUI \u0438 <code>UIHingeInteraction<\/code> \u0432 UIKit. \u041e\u043d\u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (<code>closed<\/code>, <code>partiallyOpen<\/code>, <code>fullyOpen<\/code>) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0443\u0433\u043e\u043b \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0430\u043c\u0438.<\/p>\n<p>\u042d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0446\u0438\u0439 \u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439. \u0420\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e \u043d\u0435\u043c\u0443 view \u043d\u0435 \u0441\u0442\u043e\u0438\u0442. \u041e\u043d \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0433\u0438\u0431 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0432\u0432\u043e\u0434: \u043f\u043b\u0430\u0432\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438, \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0430. \u0412 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111463\/\">Strike a pose<\/a> Apple \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 pitch bend \u0432 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p>\u041f\u043e\u0437\u0438\u0446\u0438\u044e \u043a\u043d\u043e\u043f\u043e\u043a, \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0438 \u043f\u0430\u043d\u0435\u043b\u0435\u0439 \u043f\u043e \u0443\u0433\u043b\u0443 \u0441\u0433\u0438\u0431\u0430 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0414\u043b\u044f layout Apple \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 <code>reservedRegions<\/code> \u0438 <code>ArrangementView<\/code>. \u0418\u043d\u0430\u0447\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u0430\u043c\u0438\u043c \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0440\u043e\u0433\u0438 \u0443\u0433\u043b\u043e\u0432 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e pose.<\/p>\n<pre><code class=\"swift\">\/\/ SwiftUI: \u0440\u0435\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u0443\u0433\u043e\u043b, \u043d\u0435 \u043d\u0430 layoutContentView()    .onHingeChange { context in        switch context.state {        case .closed, .fullyOpen:            effectIntensity = 0        case .partiallyOpen:            effectIntensity = context.angle \/\/ \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435        @unknown default:            break        }    }\/\/ UIKit: UIHingeInteraction \u043d\u0430 view \u0438\u043b\u0438 view controllerlet hinge = UIHingeInteraction { context in    updateEffect(intensity: context.angle)}view.addInteraction(hinge)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0417\u0430\u0434\u0430\u0447\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">API<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0413\u0434\u0435 \u0441\u0433\u0438\u0431 \u0438 \u043a\u0430\u043c\u0435\u0440\u044b, \u043a\u0443\u0434\u0430 \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>reservedRegions<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u0433\u0438\u0431\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>ArrangementView<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0416\u0435\u0441\u0442, \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u0442 \u0443\u0433\u043b\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>onHingeChange<\/code> \/ <code>UIHingeInteraction<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><a class=\"anchor\" name=\"multi-scene\" id=\"multi-scene\"><\/a><\/p>\n<h3>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0446\u0435\u043d: \u043d\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435<\/h3>\n<p>\u041d\u0430 Duo \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043e\u043a\u043d\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435. \u041d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u043d\u043e\u0432\u0430\u044f scene \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u0438 \u0435\u0451 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u042d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c scene \u0438 \u043d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0442 scene accessories: accessory \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 UI \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435, \u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0435 \u043e\u043a\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043d \u043d\u0430 iPad, \u043d\u0430 Duo \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0442\u043e\u0442 \u0436\u0435. \u041c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0442\u043a\u0430\u0437\u0430 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435.<\/p>\n<p><a class=\"anchor\" name=\"open-window\" id=\"open-window\"><\/a><\/p>\n<h4>\u041a\u0430\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e<\/h4>\n<ol>\n<li>\n<p>\u0427\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e. \u042d\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u043f\u0443\u0442\u044c Apple. <code>UIWindowScene.ActivationAction<\/code> (\u0441 iOS 15, \u0432 Objective-C \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>UIWindowSceneActivationAction<\/code>) \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 <code>UIMenu<\/code>, \u043a\u043d\u043e\u043f\u043a\u0443 \u0438\u043b\u0438 bar button item. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u0443\u043d\u043a\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 scene \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 <code>NSUserActivity<\/code> \u0441 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c. \u041f\u0443\u043d\u043a\u0442 \u0441\u0430\u043c \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e. \u0414\u043b\u044f iPhone \u0431\u0435\u0437 multi-window \u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f Duo \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c alternate action \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c.<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"swift\">let alternate = UIAction(title: \"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438\") { _ in   showDetailInCurrentWindow()}let openInNewWindow = UIWindowScene.ActivationAction(alternate: alternate) { _ in   let activity = NSUserActivity(activityType: \"com.example.openNote\")   activity.userInfo = [\"noteID\": note.id]   return UIWindowScene.ActivationConfiguration(userActivity: activity)}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<ol start=\"2\">\n<li>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0432 UIKit. \u0412 <code>UIApplication.shared.requestSceneSessionActivation<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 <code>nil<\/code> \u0432 <code>sceneSession<\/code>, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e scene, \u0438\u043b\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0443\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0435 \u043e\u043a\u043d\u043e.<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"swift\">UIApplication.shared.requestSceneSessionActivation(   nil,   userActivity: activity,   options: nil) { error in   \/\/ \u041d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 Duo \u0438\u043b\u0438 \u0431\u0435\u0437 SupportsMultipleScenes   handleSceneActivationFailure(error)}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<ol start=\"3\">\n<li>\n<p>\u0412 SwiftUI. \u041e\u0431\u044a\u044f\u0432\u0438\u0442\u0435 <code>WindowGroup<\/code> \u0441 <code>id<\/code>, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 environment:<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"swift\">@mainstruct NotesApp: App {   var body: some Scene {       WindowGroup { NotesRootView() }       WindowGroup(id: \"note\", for: String.self) { $noteID in           if let noteID { NoteDetailView(noteID: noteID) }       }   }}struct OpenNoteButton: View {   @Environment(\\.supportsMultipleWindows) private var supportsMultipleWindows   @Environment(\\.openWindow) private var openWindow   var body: some View {       Button(\"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435\") {           openWindow(id: \"note\", value: noteID)       }       .disabled(!supportsMultipleWindows)   }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043e\u043a\u043d\u043e \u0441 \u0442\u0430\u043a\u0438\u043c <code>value<\/code> \u0443\u0436\u0435 \u0435\u0441\u0442\u044c, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442 \u0435\u0433\u043e, \u0430 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442.<\/p>\n<p><a class=\"anchor\" name=\"close-window\" id=\"close-window\"><\/a><\/p>\n<h4>\u041a\u0430\u043a \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e<\/h4>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u043a\u043d\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0436\u0435\u0441\u0442\u043e\u043c \u0438\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u043e\u0439. \u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"swift\">\/\/ UIKit: \u0443\u0431\u0440\u0430\u0442\u044c scene \u0438\u0437 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439UIApplication.shared.requestSceneSessionDestruction(    windowScene.session,    options: nil,    errorHandler: { error in \/* ... *\/ })\/\/ SwiftUI: \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0438\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435@Environment(\\.dismissWindow) private var dismissWindow@Environment(\\.dismiss) private var dismissButton(\"\u0417\u0430\u043a\u0440\u044b\u0442\u044c\") {    dismissWindow(id: \"note\", value: noteID) \/\/ \u0438\u043b\u0438 dismiss() \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0433\u043e \u043e\u043a\u043d\u0430}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u043a\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0434\u0430\u0451\u0442 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e.<\/p>\n<p><a class=\"anchor\" name=\"share-between-windows\" id=\"share-between-windows\"><\/a><\/p>\n<h4>\u0427\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043e\u043a\u043d\u0430\u043c\u0438<\/h4>\n<p>\u041e\u0431\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0431\u0430\u0437\u0443 \u0437\u0430\u043c\u0435\u0442\u043e\u043a \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e, \u0445\u0440\u0430\u043d\u044f\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u043c\u0435\u0442\u043a\u0443, \u0444\u0438\u043b\u044c\u0442\u0440 \u0438 navigation path \u0445\u0440\u0430\u043d\u044f\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 scene, \u0447\u0435\u0440\u0435\u0437 <code>@SceneStorage<\/code> \u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 store \u043d\u0430 \u043e\u043a\u043d\u043e. \u0418\u043d\u0430\u0447\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>ActivationAction<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0438\u0437 \u043c\u0435\u043d\u044e, \u0430\u0432\u0442\u043e\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u0440\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>requestSceneSessionActivation<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \/ \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u0435 scene<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>requestSceneSessionDestruction<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 scene<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>openWindow<\/code> \/ <code>dismissWindow<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u043e \u0436\u0435 \u0432 SwiftUI<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Scene accessory<\/p>\n<\/td>\n<td>\n<p align=\"left\">UI \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u0431\u0435\u0437 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043a\u043d\u0430<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438: <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111464\/\">Leverage multiple displays and scenes on iPhone Duo<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"scene-accessories\" id=\"scene-accessories\"><\/a><\/p>\n<h3>Scene Accessories<\/h3>\n<p>Scene Accessories \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435. \u042d\u0442\u043e \u043d\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0432\u0442\u043e\u0440\u043e\u0435 \u043e\u043a\u043d\u043e \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0438 \u043d\u0435 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f scene. \u041a\u043e\u0433\u0434\u0430 \u0438 \u0433\u0434\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c accessory, \u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 accessory \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041a\u0440\u0438\u0442\u0435\u0440\u0438\u0439<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f scene<\/p>\n<\/th>\n<th>\n<p align=\"left\">Scene accessory<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0427\u0442\u043e \u044d\u0442\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u0442\u043e\u0440\u043e\u0435 \u043e\u043a\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u043e\u043f. UI \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0417\u0430\u043f\u0440\u043e\u0441 \u0447\u0435\u0440\u0435\u0437 <code>ActivationAction<\/code> \/ <code>openWindow<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u0430 Duo<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0427\u0430\u0441\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u0438\u043c\u0435\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0432\u0435 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u0432 \u0434\u0432\u0443\u0445 \u043e\u043a\u043d\u0430\u0445<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u0435\u043b\u0435\u0441\u0443\u0444\u043b\u0451\u0440 \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u0441\u044a\u0451\u043c\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043d\u0430 Duo: <code>CameraCaptureAccessory<\/code>. \u042d\u0442\u043e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438, \u043f\u0440\u0435\u0432\u044c\u044e \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u043b\u0438 \u0442\u0435\u043b\u0435\u0441\u0443\u0444\u043b\u0451\u0440 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u044d\u043a\u0440\u0430\u043d\u0435, \u043f\u043e\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u044a\u0451\u043c\u043a\u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c. \u0412 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111464\/\">Leverage multiple displays and scenes<\/a> Apple \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 full screen \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0434\u0451\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b;<\/p>\n<\/li>\n<li>\n<p>accessory \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c (<code>isEnabled<\/code>).<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c accessory \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438: \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0437\u0430\u043a\u0440\u044b\u043b\u0438, \u043a\u0430\u043c\u0435\u0440\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438, \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f. \u041d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 <code>onAvailabilityChange<\/code> \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c. \u041e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0434\u0451\u0442 \u0432 \u043f\u0443\u0441\u0442\u043e\u0442\u0443, \u043d\u0435 \u0441\u0442\u043e\u0438\u0442.<\/p>\n<pre><code class=\"swift\">struct CameraRootView: View {   @State private var model = TeleprompterModel()   var body: some View {       CameraView(model: model)           .sceneAccessory {               CameraCaptureAccessory(isEnabled: $model.isEnabled) {                   TeleprompterView(model: model) \/\/ \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u043c\u0435\u0440\u043e\u0439               }               .onAvailabilityChange { model.isAvailable = $0 }           }           .toolbar {               TeleprompterToggle(isEnabled: $model.isEnabled)                   .disabled(!model.isAvailable)           }   }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e accessory \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435. \u041d\u0430 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 view scene \u0432\u0435\u0448\u0430\u0435\u0442\u0441\u044f modifier <code>.sceneAccessory<\/code>, \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0442\u0438\u043f accessory, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>CameraCaptureAccessory<\/code> \u0434\u043b\u044f \u043a\u0430\u043c\u0435\u0440\u044b. \u0424\u043b\u0430\u0433 <code>isEnabled<\/code> \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 <code>onAvailabilityChange<\/code> \u043e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. UI \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u0442\u043e\u0433\u043e, \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441\u043d\u0430\u0440\u0443\u0436\u0438.<\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438: <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111464\/\">Leverage multiple displays and scenes on iPhone Duo<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"cameras\" id=\"cameras\"><\/a><\/p>\n<h3>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440<\/h3>\n<p>\u041d\u0430 Duo \u0434\u0432\u0435 \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u0430\u043c\u0435\u0440\u044b: \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u0438 \u043f\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c. \u041e\u0431\u0435 \u043e\u0442\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a <code>position == .front<\/code>, \u043d\u043e \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0438 pose \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u043a\u0430\u043a\u0430\u044f \u043a\u0430\u043c\u0435\u0440\u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043a\u0443\u0449\u0438\u043c view.<\/p>\n<p>\u0414\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c Virtual Front Camera. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0438\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u043a\u0430\u043c\u0435\u0440\u0443 \u043f\u0440\u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0438 \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u0430\u0451\u0442 \u043e\u0431\u0449\u0435\u0435 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u0435\u0438\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u0430\u043c\u0435\u0440, \u0430 \u043d\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u0430\u0436\u0434\u043e\u0439. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Apple \u044d\u0442\u043e 1080p, 60 fps, \u0431\u0435\u0437 depth. \u0414\u043b\u044f 4K \u0438\u043b\u0438 120 fps \u0441 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041a\u0440\u0438\u0442\u0435\u0440\u0438\u0439<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041e\u0431\u044b\u0447\u043d\u044b\u0439 iPhone<\/p>\n<\/th>\n<th>\n<p align=\"left\">iPhone Duo<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0417\u0430\u043f\u0440\u043e\u0441 <code>.front<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0434\u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u0430\u043c\u0435\u0440\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">Virtual Front Camera \u0441 \u0430\u0432\u0442\u043e\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0417\u0430\u0434\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0430\u043a \u0440\u0430\u043d\u044c\u0448\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0430\u043a \u0440\u0430\u043d\u044c\u0448\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>AVCaptureDeviceDirectionCoordinator<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u043d\u0443\u0436\u0435\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0443\u0436\u0435\u043d, \u0435\u0441\u043b\u0438 UI \u0438 \u043a\u0430\u043c\u0435\u0440\u0430 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0438\u0441\u043f\u043b\u0435\u044f\u0445<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u043d\u0441\u043e\u0440\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e \u0442\u0438\u043f\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 Discovery Session<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>builtInOuterUltraWideCamera<\/code> \/ <code>builtInInnerUltraWideCamera<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. <code>AVCaptureDeviceDirectionCoordinator<\/code> \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e view, \u0430 \u043d\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0432 \u043a\u043e\u043c\u043d\u0430\u0442\u0435. \u041f\u0440\u043e\u0441\u0442\u043e\u0433\u043e <code>.front<\/code> \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e: \u043e\u0431\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435, \u043d\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0438\u0441\u043f\u043b\u0435\u044f\u043c\u0438 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u043a\u0430\u043a\u0430\u044f \u0438\u0437 \u043d\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u044d\u043a\u0440\u0430\u043d\u0443.<\/p>\n<pre><code class=\"swift\">\/\/ \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c: \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u0430\u043c\u0435\u0440\u0430, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0430\u043c\u0430let session = AVCaptureDevice.DiscoverySession(    deviceTypes: [.builtInWideAngleCamera],    mediaType: .video,    position: .front)let device = session.devices.first \/\/ \u043d\u0430 Duo \u2014 Virtual Front Camera\/\/ \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c: \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u044b + \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044flet outer = AVCaptureDevice.DiscoverySession(    deviceTypes: [.builtInOuterUltraWideCamera],    mediaType: .video,    position: .front)\/\/ directionCoordinator \u2014 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e preview view<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Preview, \u0437\u0435\u0440\u043a\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u0434\u0438\u0441\u043f\u043b\u0435\u044f Apple \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0432 <a href=\"https:\/\/developer.apple.com\/videos\/play\/tech-talks\/111465\/\">Build a great camera experience for iPhone Duo<\/a>.<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u0441\u0435 API \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u0414\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0445\u0432\u0430\u0442\u0438\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0414\u043b\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e layout \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f <code>reservedRegions<\/code>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u0443\u0445 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u0432, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u043a\u043e\u043d \u0438 camera accessory \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u0430 \u043d\u0435 \u00ab\u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435\u00bb.<\/p>\n<p><a class=\"anchor\" name=\"complexity\" id=\"complexity\"><\/a><\/p>\n<h3>\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f<\/h3>\n<p>\u041d\u0438\u0436\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440 \u043f\u043e \u043e\u0431\u044a\u0451\u043c\u0443 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a UI. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u043d\u0430\u0447\u0430\u0442\u044c \u0430\u0443\u0434\u0438\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u044d\u043a\u0440\u0430\u043d\u043e\u0432, \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u043f\u0430\u043d\u0435\u043b\u0435\u0439 \u0438 \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e layout \u0443\u0436\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u043a\u043d\u0430, \u0430 \u043d\u0435 \u043e\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u0438\u0437\u043a\u0430\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 resize \u043d\u0430 iPad \u0438\u043b\u0438 \u0432 Mirroring, \u043c\u0430\u043b\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u043f\u0430\u043d\u0435\u043b\u0435\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0431\u043e\u0440\u043a\u0430 \u0441 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c SDK, smoke-\u0442\u0435\u0441\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0435 \u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u043d\u0430 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 Duo (\u043f\u043e\u0441\u043b\u0435 Xcode 27.1)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0440\u0435\u0434\u043d\u044f\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438, layout \u043f\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0440\u0430\u0441\u0447\u0451\u0442\u044b \u0447\u0435\u0440\u0435\u0437 <code>UIScreen.main<\/code>, \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u0445 \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u0443\u0434\u0438\u0442 \u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432 \u043d\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, size class \u0438 safe area<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u044b\u0441\u043e\u043a\u0430\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u0433\u0440\u044b, canvas \u0438\u043b\u0438 \u0441\u0432\u043e\u0439 layout \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u0433\u0438\u0431\u0430. \u041d\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0433\u0440\u0430 \u0441\u044e\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0443 \u0441\u0433\u0438\u0431\u0430, <code>reservedRegions<\/code>, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 <code>ArrangementView<\/code>, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 pose<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><a class=\"anchor\" name=\"checklist\" id=\"checklist\"><\/a><\/p>\n<h2>\u0427\u0435\u043a\u043b\u0438\u0441\u0442 \u0430\u0443\u0434\u0438\u0442\u0430 \u0438 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<\/h2>\n<p>\u041d\u0438\u0436\u0435 \u0447\u0435\u043a\u043b\u0438\u0441\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0430 \u043f\u043e \u043a\u043e\u0434\u0443. \u0423\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0430\u043a\u043e\u0439: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0438\u0441\u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 API \u0438 \u0430\u043d\u0442\u0438\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432, \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u043a\u043d\u0430 \u0432 Device Hub, Mirroring \u0438\u043b\u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 Duo (\u043f\u043e\u0441\u043b\u0435 Xcode 27.1).<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0438\u0433\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0434 Duo Apple \u043d\u0435 \u0434\u0430\u0451\u0442. \u0412 Xcode 27 \u0435\u0441\u0442\u044c app modernization skill \u0434\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 iOS 27: scene lifecycle, <code>UIScreen.main<\/code>, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a size class (<a href=\"https:\/\/developer.apple.com\/videos\/play\/wwdc2026\/278\/\">WWDC26-278<\/a>). \u0427\u0435\u0440\u0435\u0437 MCP (<code>xcrun mcpbridge<\/code>) \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0430\u0433\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443, \u043d\u043e fold-aware API 27.1 \u043e\u043d \u0441\u0430\u043c \u043d\u0435 \u0432\u043d\u0435\u0434\u0440\u0438\u0442. Skill \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435, diff \u0438 \u0442\u0435\u0441\u0442\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0437\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439.<\/p>\n<p><a class=\"anchor\" name=\"code-audit\" id=\"code-audit\"><\/a><\/p>\n<h3>\u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435<\/h3>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u0438\u0441\u043a\u0430\u0442\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>UIApplicationSceneManifest<\/code>, scene delegate<\/p>\n<\/td>\n<td>\n<p align=\"left\">UIKit \u043d\u0430 scene lifecycle: \u0432 Info.plist \u0435\u0441\u0442\u044c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0438\u043b\u0438 \u0432 AppDelegate \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d <code>configurationForConnecting<\/code>. \u041e\u0431\u0430 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b. SwiftUI <code>App<\/code> \u0443\u0436\u0435 \u043d\u0430 \u0441\u0446\u0435\u043d\u0430\u0445, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 SceneDelegate \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>UIScreen.main<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0420\u0430\u0437\u043c\u0435\u0440\u044b layout \u0438\u0437 bounds \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438\u043b\u0438 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 scene. <code>displayScale<\/code> \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0438\u0437 <code>windowScene.screen<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>interfaceOrientation<\/code>, <code>UIDevice.orientation<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>userInterfaceIdiom == .phone<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">Idiom \u043d\u0435 \u0440\u0435\u0436\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u043e\u043a\u043d\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>safeAreaInsets<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0431\u0435\u0437 <code>left + right<\/code> \u0438 \u0431\u0435\u0437 \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 navigation bar \/ toolbar<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0441\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 toolbar, overflow, \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0443 \u0438\u043a\u043e\u043d\u043a\u0438 (iOS 27.1)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>UIApplicationSupportsMultipleScenes<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043d: \u043a\u043b\u044e\u0447 \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0438 \u0432\u044b\u0431\u043e\u0440 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e scene<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u0447\u0451\u0442\u044b frame<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043e\u043d\u0442\u0435\u043d\u0442 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043e\u043a\u043d\u043e. \u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043b\u043e\u043c\u0430\u0435\u0442 \u0443\u0437\u043a\u0438\u0435 \u0438 \u0448\u0438\u0440\u043e\u043a\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043d\u043e\u0432\u044b\u0445 API<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0431\u0451\u0440\u0442\u043a\u0430 <code>#available(iOS 27.1, *)<\/code>, \u0435\u0441\u043b\u0438 deployment target \u043d\u0438\u0436\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">SwiftUI App lifecycle<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c <code>@main<\/code> lifecycle, \u0430 \u043d\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 SceneDelegate \u00ab\u0434\u043b\u044f \u0433\u0430\u043b\u043e\u0447\u043a\u0438\u00bb<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><a class=\"anchor\" name=\"common-problems\" id=\"common-problems\"><\/a><\/p>\n<h3>\u0422\u0440\u0438 \u0447\u0430\u0441\u0442\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/h3>\n<p><a class=\"anchor\" name=\"problem-columns\" id=\"problem-columns\"><\/a><\/p>\n<h4>1. \u0414\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0430\u043b\u044c\u0431\u043e\u043c\u043d\u043e\u0439 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/h4>\n<p>\u041e\u043a\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u0438\u043c \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043e \u043a \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0443, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u043e\u043b\u043e\u043d\u043a\u0443. \u0414\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 layout \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c size class \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<p><a class=\"anchor\" name=\"problem-width\" id=\"problem-width\"><\/a><\/p>\n<h4>2. \u0428\u0438\u0440\u0438\u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442 UIScreen.main.bounds<\/h4>\n<p>\u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0438\u043b\u0438 \u0444\u043e\u0440\u043c\u0430 \u0441 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 \u043e\u0442 \u044d\u043a\u0440\u0430\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043e\u043a\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u0434\u0438\u0441\u043f\u043b\u0435\u044f. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0430\u0441\u0447\u0451\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<p><a class=\"anchor\" name=\"problem-stretch\" id=\"problem-stretch\"><\/a><\/p>\n<h4>3. \u041d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0430<\/h4>\n<p>\u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0442\u0430\u043a\u0430\u044f layout \u043c\u043e\u0436\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0431\u0440\u0435\u0437\u0430\u0442\u044c, \u043d\u043e \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0440\u0430\u0441\u0442\u044f\u043d\u0443\u0442\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u044b. \u0421\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u0430\u0440\u0442\u043e\u0447\u0435\u043a.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u043d\u0443\u0436\u043d\u044b \u043d\u0435 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u043a\u0440\u0430\u043d\u0443. \u0414\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0448\u0438\u0440\u0438\u043d\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044f. \u0412\u044b\u0431\u043e\u0440 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p><a class=\"anchor\" name=\"runtime-check\" id=\"runtime-check\"><\/a><\/p>\n<h3>\u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 grep \u043f\u043e \u043a\u043e\u0434\u0443 \u043f\u0440\u043e\u0439\u0442\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0432 Device Hub, Mirroring \u0438\u043b\u0438 \u043d\u0430 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 Duo.<\/p>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u043e\u0440\u043c\u0443, \u043d\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0422\u043e, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0441\u043c\u0435\u043d\u0443 \u0434\u0438\u0441\u043f\u043b\u0435\u044f, fold \u0438\u043b\u0438 resize, \u0445\u0440\u0430\u043d\u044f\u0442 \u044f\u0432\u043d\u043e: <code>@SceneStorage<\/code>, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 store \u043d\u0430 scene, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 <code>NSUserActivity<\/code>.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">#<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0430 \u0447\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u042d\u043a\u0440\u0430\u043d \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u2192 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044c \u2192 \u0441\u043d\u043e\u0432\u0430 \u0441\u043b\u043e\u0436\u0438\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u044b\u0431\u043e\u0440 \u0438 \u0441\u0442\u0435\u043a \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043d\u0435 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u0432\u043e\u0434 \u0442\u0435\u043a\u0441\u0442\u0430 \u2192 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u0435\u043a\u0441\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u043f\u043e\u043b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e, \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">3<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u043a\u043d\u043e \u0432 Split View<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0424\u043e\u0440\u043c\u044b, \u043a\u043e\u043b\u043e\u043d\u043a\u0438, \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0438\u043b\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0443\u0445\u043e\u0434\u044f\u0442 \u0432 overflow<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">4<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u0435\u043d\u044e \u0438\u043b\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 popover \u2192 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u0438\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0430\u043d\u0435\u043b\u044c \u043d\u0435 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0441\u0433\u0438\u0431\u043e\u043c \u0438 \u043d\u0435 \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043c\u0435\u0440\u043e\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u043b\u0438\u043d\u043d\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438, Dynamic Type, \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 toolbar<\/p>\n<\/td>\n<td>\n<p align=\"left\">Overflow \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">6<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u0432\u0430 \u043e\u043a\u043d\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u043a\u043d\u0430 \u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430. \u041d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u043d\u0435\u0442 \u00ab\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435\u00bb; \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 scene \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">7<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>CameraCaptureAccessory<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>onAvailabilityChange<\/code>: \u043f\u0440\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043a\u0430\u043c\u0435\u0440\u044b toggle \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">API 27.1 \u043f\u043e\u0434 <code>#available<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043d\u0438\u0436\u0435 27.1 \u043d\u0435\u0442 \u043a\u0440\u0430\u0448\u0430 \u0438 \u0435\u0441\u0442\u044c \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u043f\u0443\u0442\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">9<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u043e \u0431\u0438\u043e\u043c\u0435\u0442\u0440\u0438\u044e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u043e <code>LAContext.biometryType<\/code>, \u043d\u0430 Duo \u043d\u0435 \u00abFace ID\u00bb \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><a class=\"anchor\" name=\"android\" id=\"android\"><\/a><\/p>\n<h2>\u0421\u0440\u0430\u0432\u043d\u0438\u043c \u0441 Android foldable<\/h2>\n<p>Foldable \u043d\u0430 Android \u0438 iPhone Duo \u0440\u0435\u0448\u0430\u044e\u0442 \u043e\u0434\u043d\u0443 \u0437\u0430\u0434\u0430\u0447\u0443: \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0441\u043c\u0435\u043d\u0443 \u0444\u043e\u0440\u043c\u044b \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0433\u0438\u0431\u0430. \u041d\u0430 Android \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0433\u0438\u0431\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u0430\u043d\u044c\u0448\u0435 \u0438 \u044f\u0432\u043d\u0435\u0435.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0417\u0430\u0434\u0430\u0447\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">Android<\/p>\n<\/th>\n<th>\n<p align=\"left\">iOS (Duo)<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0423\u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e \u0441\u0433\u0438\u0431<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>FoldingFeature<\/code> \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0433\u0438\u0431\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>reservedRegions(.division)<\/code> \u0438 <code>.occlusion<\/code> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 layout \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0423\u0437\u043d\u0430\u0442\u044c \u043f\u043e\u0437\u0443 \u0438 \u0443\u0433\u043e\u043b<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>FoldingFeature<\/code> \u0438 posture: \u043a\u043d\u0438\u0433\u0430, \u043e\u043f\u043e\u0440\u0430 \u043d\u0430 \u0441\u0442\u043e\u043b<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>onHingeChange<\/code> \u0438 <code>UIHingeInteraction<\/code>, \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432, \u043d\u0435 \u0434\u043b\u044f layout<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u043e\u043d\u044f\u0442\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>WindowSizeClass<\/code> \u0441 \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442\u0430\u043c\u0438 \u0432 dp<\/p>\n<\/td>\n<td>\n<p align=\"left\">Size class \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441\u0446\u0435\u043d\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0420\u0430\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u0430\u043c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0447\u0435\u0440\u0435\u0437 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 scaffold \u0432\u0440\u043e\u0434\u0435 <code>ListDetailPaneScaffold<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438; <code>ArrangementView<\/code> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0431\u043e\u0439\u0442\u0438 \u0432\u044b\u0440\u0435\u0437\u044b \u0438 \u043a\u0430\u043c\u0435\u0440\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>DisplayFeature<\/code> \u0438 cutout insets<\/p>\n<\/td>\n<td>\n<p align=\"left\">Reserved regions <code>.occlusion<\/code> \u0438 \u043d\u0435\u0440\u0430\u0432\u043d\u0430\u044f safe area<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">Multi-window \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u0441\u0433\u0438\u0431\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">Split View \u0434\u0432\u0443\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0446\u0435\u043d \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u0435\u0441\u0435\u0442\u044b foldable \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u043a\u043d\u0430 \u0432 Xcode 27; \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 Duo \u0437\u0430\u044f\u0432\u043b\u0435\u043d \u0432 Xcode 27.1 beta<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043d\u0435 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 API, \u0430 \u0432 \u0442\u043e\u043c, \u043a\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 layout. \u041d\u0430 Android \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0433\u0438\u0431\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0438 \u043e\u043d \u0441\u0430\u043c \u0440\u0435\u0448\u0430\u0435\u0442, \u043a\u0430\u043a \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u0438 \u0432\u043e\u043a\u0440\u0443\u0433 <code>FoldingFeature<\/code>. \u041d\u0430 iOS \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439 UI \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0430 \u0441\u0433\u0438\u0431 \u043e\u043f\u0438\u0441\u0430\u043d \u043a\u0430\u043a \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044f (<code>reservedRegions<\/code>), \u043a\u043e\u0442\u043e\u0440\u0443\u044e layout \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e UI \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u043d\u0443\u0436\u043d\u043e \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435: \u0437\u043d\u0430\u0442\u044c, \u0433\u0434\u0435 \u0441\u0433\u0438\u0431 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u0442\u0430 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0435\u0440\u0451\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c Android: <a href=\"https:\/\/developer.android.com\/develop\/adaptive-apps\/guides\/get-started-with-adaptive-apps\">Adaptive Apps<\/a>. \u041f\u0440\u043e insets \u043d\u0430 Android \u043f\u0438\u0441\u0430\u043b \u043c\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/687310\/\">\u0413\u043e\u0442\u043e\u0432\u0438\u043c Window Inset \u043f\u043e\u0434 \u0441\u043e\u0443\u0441\u043e\u043c Jetpack Compose \u0438 \u0449\u0435\u043f\u043e\u0442\u043a\u043e\u0439 View<\/a>, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e, \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c.<\/p>\n<p><a class=\"anchor\" name=\"cmp\" id=\"cmp\"><\/a><\/p>\n<h2>Compose Multiplatform<\/h2>\n<p>\u0423 KMP-\u043a\u043e\u043c\u0430\u043d\u0434 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u0442\u0430\u043a: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u0437\u0430\u043a\u0440\u043e\u0435\u0442 \u043e\u0431\u0449\u0438\u0439 \u043a\u043e\u0434. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u044d\u043a\u0440\u0430\u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437: \u0432 <code>commonMain<\/code> \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c <code>WindowSizeClass<\/code> \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432\u0440\u043e\u0434\u0435 <code>ListDetailPaneScaffold<\/code>. \u041a\u043e\u043b\u043e\u043d\u043a\u0438 \u0438 \u0431\u0440\u0435\u0439\u043a\u043f\u043e\u0438\u043d\u0442\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c\u0438 \u0434\u043b\u044f Android \u0438 iOS. \u041c\u043e\u0434\u0435\u043b\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 <a href=\"https:\/\/kotlinlang.org\/docs\/multiplatform\/compose-adaptive-layouts.html\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Kotlin \u043f\u043e adaptive layouts<\/a>.<\/p>\n<p>\u041d\u0430 iOS \u044d\u0442\u043e \u0443\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 resize \u043e\u043a\u043d\u0430 \u0438 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439 list+detail. \u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0441\u0433\u0438\u0431\u043e\u043c. \u041d\u0430 Android \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b <code>FoldingFeature<\/code> \u0438 \u043f\u043e\u0437\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u041d\u0430 iOS <code>reservedRegions<\/code>, hinge \u0438 <code>ArrangementView<\/code> \u0432 Compose \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0431\u0451\u0440\u043d\u0443\u0442\u044b. \u0414\u043e\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043d\u0438\u0445 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>expect\/actual<\/code> \u0438\u043b\u0438 interop \u0441 UIKit. \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u0431\u0449\u0438\u0439 \u043a\u043e\u0434 \u0437\u0430\u043a\u0440\u043e\u0435\u0442 \u0441\u0433\u0438\u0431 \u043d\u0430 iOS \u0441\u0430\u043c, \u043f\u043e\u043a\u0430 \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0417\u0430\u044f\u0432\u043a\u0430 \u0432 YouTrack<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0421\u0442\u0430\u0442\u0443\u0441<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/CMP-10776\">CMP-10776<\/a> Ensure compatibility with iPhone Duo<\/p>\n<\/td>\n<td>\n<p align=\"left\">Submitted, \u0446\u0435\u043b\u044c 1.13.0<\/p>\n<\/td>\n<td>\n<p align=\"left\">Insets, reserved regions, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0441 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439, drag-and-drop \u0432 Split View, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/CMP-8299\">CMP-8299<\/a> Support window insets rulers<\/p>\n<\/td>\n<td>\n<p align=\"left\">Fixed<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0430\u0437\u0430 insets \u043d\u0430 iOS, \u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0433\u0438\u0431\u0430 Duo<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u044f\u0432\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 hinge \u0438\u043b\u0438 <code>ArrangementView<\/code> \u0432 Compose \u043d\u0435\u0442: \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u0438 CMP-10776.<\/p>\n<p>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 \u0434\u043b\u044f KMP \u0442\u0430\u043a\u043e\u0439: \u043e\u0431\u0449\u0438\u0439 adaptive layout \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441, \u0430 fold-aware \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 iOS \u0441\u0442\u043e\u0438\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e: \u043b\u0438\u0431\u043e \u0436\u0434\u0430\u0442\u044c CMP-10776, \u043b\u0438\u0431\u043e \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c <code>iosMain<\/code> \u0441 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c interop.<\/p>\n<p><a class=\"anchor\" name=\"conclusion\" id=\"conclusion\"><\/a><\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>Duo \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u043b\u0438\u043d\u0438\u044e iOS 27: \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0436\u0438\u0442\u044c \u0432 \u043e\u043a\u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430. Duo \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a \u044d\u0442\u043e\u043c\u0443 \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0438 \u0441\u0433\u0438\u0431.<\/p>\n<p>\u0415\u0441\u0442\u044c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0430\u0437\u0430. \u041f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0441 iOS 27 SDK \u043d\u0443\u0436\u0435\u043d scene lifecycle, \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u043e\u0438\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432\u043c\u0435\u0441\u0442\u043e <code>UIScreen.main<\/code>, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e size class, \u0430 \u043d\u0435 \u043f\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 <code>userInterfaceIdiom<\/code>, \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445. \u0412\u0441\u0451 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0438 \u0431\u0435\u0437 Duo. \u0422\u0430\u043a\u043e\u0435 \u0436\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u043d\u043e \u0432 iPhone Mirroring \u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 iPhone-only \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 iPad. \u041e\u0434\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0430 \u0441 27.1 SDK \u0447\u0435\u043a\u043b\u0438\u0441\u0442 \u0430\u0443\u0434\u0438\u0442\u0430 \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. <code>reservedRegions<\/code> \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u0439 \u0432\u0451\u0440\u0441\u0442\u043a\u0435, <code>ArrangementView<\/code> \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043f\u043b\u044e\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e scene, scene accessories \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043a\u0430\u043c\u0435\u0440\u0430\u043c\u0438. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u0430 \u043d\u0435 \u0440\u0430\u0434\u0438 \u0433\u0430\u043b\u043e\u0447\u043a\u0438.<\/p>\n<p>\u0414\u043e \u0432\u044b\u0445\u043e\u0434\u0430 27.1 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0430\u0443\u0434\u0438\u0442 \u043f\u043e \u0447\u0435\u043a\u043b\u0438\u0441\u0442\u0443, \u0443\u0431\u0440\u0430\u0442\u044c \u0440\u0430\u0441\u0447\u0451\u0442\u044b \u043e\u0442 \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u043a\u043d\u0430 \u043d\u0430 iPad \u0438 \u0432 Mirroring. \u0421\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 Duo \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d. \u0412 KMP-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0441\u044e\u0434\u0430 \u0436\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u0449\u0438\u0439 layout \u043f\u043e <code>WindowSizeClass<\/code>. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0433\u0438\u0431\u0430 \u043d\u0430 iOS \u0436\u0434\u0451\u0442 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/CMP-10776\">CMP-10776<\/a>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 SDK \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c API, \u0443\u0441\u043b\u043e\u0432\u0438\u044f accessories \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b, \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0438 \u043d\u0430 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u0438\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043c\u043e\u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0442\u043e\u0436\u0435 \u043f\u0438\u0448\u0443\u0442 \u043e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/959950\/\">\u0417\u0430 3 \u0434\u043d\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 iOS: \u043e\u043f\u044b\u0442 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0434 CMP<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/907678\/\">Compose Multiplatform 1.8.0: \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 iOS \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 stable<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/915932\/\">40 \u0443\u0434\u0430\u0440\u043e\u0432 \u043f\u0430\u043b\u043a\u043e\u0439 \u0438 Kotlin Multiplatform: \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432 \u041a\u0430\u0442\u0430\u0440\u0435<\/a> (\u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0441 \u0421\u0435\u0440\u0433\u0435\u0435\u043c \u0420\u0430\u043a\u043e\u0432\u044b\u043c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0432 Snoonu \u2014 \u043a\u0430\u0442\u0430\u0440\u0441\u043a\u043e\u043c IT-\u0433\u0438\u0433\u0430\u043d\u0442\u0435)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/805495\/\">KMP, \u0434\u043e\u0433\u0444\u0443\u0434\u0438\u043d\u0433 \u0438 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b \u0432 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0435 \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u00ab\u041a\u0443\u0445\u043d\u0438 \u043d\u0430 \u0440\u0430\u0439\u043e\u043d\u0435\u00bb<\/a> (\u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0441 \u0421\u0435\u043d\u0435\u0439 \u0421\u0443\u0437\u0434\u0430\u043b\u044c\u043d\u0438\u0446\u043a\u0438\u043c, CTO Sizl \u2014 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0435\u0434\u044b \u0432 \u0427\u0438\u043a\u0430\u0433\u043e)<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1082590\/\">https:\/\/habr.com\/ru\/articles\/1082590\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u042f \u0412\u0430\u043b\u0435\u0440\u0438\u044f \u041a\u0443\u0434\u0440\u044f\u0432\u0446\u0435\u0432\u0430, iOS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 KTS. \u041f\u043e\u0440\u0430 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043d\u043e\u0432\u0438\u043d\u043a\u0435.9 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430 Apple \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 iPhone Duo, \u0441\u0432\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043a\u043b\u0430\u0434\u043d\u043e\u0439 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d. \u041f\u043e\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c-\u0444\u0430\u043a\u0442\u043e\u0440, \u0443 \u043d\u0430\u0441, iOS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0432\u043e\u043f\u0440\u043e\u0441 \u0431\u044b\u043b \u0434\u0440\u0443\u0433\u043e\u0439: \u043a\u0430\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441 \u0434\u0432\u0443\u043c\u044f \u044d\u043a\u0440\u0430\u043d\u0430\u043c\u0438 \u0438 \u0441\u0433\u0438\u0431\u043e\u043c. \u0414\u043b\u044f \u043d\u0430\u0441 Apple \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0430 \u0440\u0430\u0437\u0434\u0435\u043b HIG \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0434 Duo, \u0448\u0435\u0441\u0442\u044c Tech Talks \u0438 \u0445\u0430\u0431 Get Ready for iPhone Duo.\u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 Tech Talks Apple. Xcode 27.1 beta \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0432\u044b\u0448\u0435\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 27.1 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u043c. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 SDK.\u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c. \u041f\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 Apple, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u044f\u0442\u0441\u044f \u043d\u0430 Duo \u0438 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438. \u041d\u043e \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u044d\u0442\u043e \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442: \u0442\u043e, \u043a\u0430\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u0439\u043c\u0451\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0438 \u043a\u0430\u043a \u043f\u043e\u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u0430\u043d\u0435\u043b\u0438, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 SDK, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043e. \u0420\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0440\u0430\u0437\u0431\u0435\u0440\u0443 \u043d\u0438\u0436\u0435.\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e pose Duo \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u0410 \u0432\u043e\u0442 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0451\u0440\u0441\u0442\u043a\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043a\u043e\u0434 \u0431\u0435\u0440\u0451\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u043b\u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u043c\u0438, \u043d\u0430 Duo \u0442\u0430\u043a\u0438\u0435 \u0440\u0430\u0441\u0447\u0451\u0442\u044b \u0434\u0430\u0434\u0443\u0442 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041e\u0441\u043d\u043e\u0432\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u043d\u0430: \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 UI, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u043d\u0430 size class.\u0414\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f iOS 27, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0430\u043c\u0430 \u0438 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435, \u043d\u043e\u0432\u044b\u0435 API 27.1 \u0438 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0430\u0443\u0434\u0438\u0442\u0435. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0441\u0440\u0430\u0432\u043d\u044e \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0441 Android foldable \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 Compose Multiplatform.\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435iOS 27: \u0447\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Scene lifecycle \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0420\u0430\u0437\u043c\u0435\u0440 \u044d\u043a\u0440\u0430\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 layout UIRequiresFullScreen \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 resizeiPhone Duo: \u044d\u043a\u0440\u0430\u043d\u044b, pose \u0438 SDK \u0414\u0432\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f, \u0440\u0430\u0437\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430\u041a\u0430\u043a\u0438\u0435 pose \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0427\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 SDK\u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0430 \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435 \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432\u043e\u0437\u044c\u043c\u0443\u0442 \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u0441\u0435\u0431\u044f\u041a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 toolbar \u043c\u0435\u043d\u044f\u044e\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0421\u0432\u043e\u044f \u0432\u0451\u0440\u0441\u0442\u043a\u0430 \u0438 safe areaSplit View \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043dAPI \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 Duo Reserved regions: \u0433\u0434\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u0433\u0438\u0431 \u0438 \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442ArrangementView: \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430\u0423\u0433\u043e\u043b \u0441\u0433\u0438\u0431\u0430: \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0446\u0435\u043d: \u043d\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u041a\u0430\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e\u041a\u0430\u043a \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e\u0427\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043e\u043a\u043d\u0430\u043c\u0438Scene Accessories\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043c\u0435\u0440\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f\u0427\u0435\u043a\u043b\u0438\u0441\u0442 \u0430\u0443\u0434\u0438\u0442\u0430 \u0438 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435\u0422\u0440\u0438 \u0447\u0430\u0441\u0442\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b 1. \u0414\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0430\u043b\u044c\u0431\u043e\u043c\u043d\u043e\u0439 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u04382. \u0428\u0438\u0440\u0438\u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442 UIScreen.main.bounds3. \u041d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u0427\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438\u0421\u0440\u0430\u0432\u043d\u0438\u043c \u0441 Android foldableCompose Multiplatform\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435iOS 27: \u0447\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u041d\u0430\u0447\u043d\u0443 \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u0441\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u0445 iOS-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0412 iOS 27 \u043e\u043a\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440: \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 iPhone Mirroring \u043d\u0430 Mac \u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 iPhone-only \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 iPad. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0435\u0433\u043e iOS 27 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441.Scene lifecycle \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u041f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0441 iOS 27 SDK \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u043c UIKit lifecycle \u0431\u0435\u0437 scene lifecycle \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f. Apple \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u043b\u0430 \u043e\u0431 \u044d\u0442\u043e\u043c \u0441 WWDC25, \u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 TN3187.\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043a\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432 AppDelegate: \u043d\u0443\u0436\u0435\u043d UIApplicationSceneManifest \u0438 configurationForConnecting.\u0411\u044b\u043b\u043e (UIKit \u0431\u0435\u0437 scene lifecycle \u0441 iOS 27 SDK \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f):@mainclass AppDelegate: UIResponder, UIApplicationDelegate {    var window: UIWindow?    func application(        _ application: UIApplication,        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?    ) -&gt; Bool {        window = UIWindow(frame: UIScreen.main.bounds)        window?.rootViewController = RootViewController()        window?.makeKeyAndVisible()        return true    }}\u0421\u0442\u0430\u043b\u043e (scene-based lifecycle):\/\/ Info.plist: UIApplicationSceneManifest@mainclass AppDelegate: UIResponder, UIApplicationDelegate {    func application(        _ application: UIApplication,        configurationForConnecting connectingSceneSession: UISceneSession,        options: UIScene.ConnectionOptions    ) -&gt; UISceneConfiguration {        UISceneConfiguration(            name: &#171;Default Configuration&#187;,            sessionRole: connectingSceneSession.role        )    }}class SceneDelegate: UIResponder, UIWindowSceneDelegate {    var window: UIWindow?    func scene(        _ scene: UIScene,        willConnectTo session: UISceneSession,        options connectionOptions: UIScene.ConnectionOptions    ) {        guard let windowScene = scene as? UIWindowScene else { return }        window = UIWindow(windowScene: windowScene)        window?.rootViewController = RootViewController()        window?.makeKeyAndVisible()    }}\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 Info.plist:&lt;key&gt;UIApplicationSceneManifest&lt;\/key&gt;&lt;dict&gt;    &lt;key&gt;UIApplicationSupportsMultipleScenes&lt;\/key&gt;    &lt;false\/&gt;    &lt;key&gt;UISceneConfigurations&lt;\/key&gt;    &lt;dict&gt;        &lt;key&gt;UIWindowSceneSessionRoleApplication&lt;\/key&gt;        &lt;array&gt;            &lt;dict&gt;                &lt;key&gt;UISceneConfigurationName&lt;\/key&gt;                &lt;string&gt;Default Configuration&lt;\/string&gt;                &lt;key&gt;UISceneDelegateClassName&lt;\/key&gt;                &lt;string&gt;$(PRODUCT_MODULE_NAME).SceneDelegate&lt;\/string&gt;            &lt;\/dict&gt;        &lt;\/array&gt;    &lt;\/dict&gt;&lt;\/dict&gt;\u041f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0430 SwiftUI App \u0443\u0436\u0435 scene-based. \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043d\u0443\u0436\u043d\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c UIKit-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u0431\u0435\u0437 UIApplicationSceneManifest.\u041f\u0440\u0438 \u044d\u0442\u043e\u043c scene lifecycle \u043d\u0435 \u043e\u0431\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043d. \u0423 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u0430 scene. \u0421\u043c\u044b\u0441\u043b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 UI \u0431\u044b\u043b \u0441\u0432\u043e\u0439 scene lifecycle \u0438 \u0441\u0432\u043e\u0451 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.\u0420\u0430\u0437\u043c\u0435\u0440 \u044d\u043a\u0440\u0430\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430UIScreen.main.bounds \u043e\u0442\u0434\u0430\u0451\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430:let screenWidth = UIScreen.main.bounds.width\u041d\u043e \u043e\u043a\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 main \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043d\u0435 \u043a \u0442\u043e\u043c\u0443 \u0434\u0438\u0441\u043f\u043b\u0435\u044e, \u0433\u0434\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043e\u043a\u043d\u043e:let screen = UIScreen.main        \/\/ \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u043e\u0442 \u0434\u0438\u0441\u043f\u043b\u0435\u0439let screen = windowScene.screen   \/\/ \u044d\u043a\u0440\u0430\u043d \u0442\u0435\u043a\u0443\u0449\u0435\u0439 scene\u0414\u043b\u044f \u0432\u0451\u0440\u0441\u0442\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 view \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:let width = cardView.superview?.bounds.width ?? 0\u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 scene \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e UIWindowScene:let geometry = windowScene.effectiveGeometryUIScreen \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 windowScene.screen. \u0418 displayScale \u043d\u0443\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u0443 \u044d\u043a\u0440\u0430\u043d\u0430 \u044d\u0442\u043e\u0439 scene, \u0430 \u043d\u0435 \u0443 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e main:let scale = windowScene.screen.scale\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0448\u0438\u0440\u0438\u043d\u044b \u044d\u043a\u0440\u0430\u043d\u0430.\/\/ \u043f\u043b\u043e\u0445\u043e \u043f\u0440\u0438 resize \u043e\u043a\u043d\u0430let cardWidth = UIScreen.main.bounds.width \/ 2\u041f\u043e\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041d\u043e \u0432 Split View \u0442\u0430 \u0436\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0435. \u0428\u0438\u0440\u0438\u043d\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u043b\u0435\u0436\u0438\u0442.\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 layout\u0412 iOS 27 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432 resizable-\u0441\u0440\u0435\u0434\u0430\u0445, \u0430 \u043d\u0435 \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\/\/ preference, \u043d\u0435 \u043e\u043f\u043e\u0440\u0430 \u0434\u043b\u044f layout \u0432 resizable-\u0441\u0440\u0435\u0434\u0435override var supportedInterfaceOrientations: UIInterfaceOrientationMask {   .portrait}\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 iPhone Mirroring \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0440\u0442\u0440\u0435\u0442\u043d\u043e\u0439, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0430\u0441\u0442\u044f\u043d\u0443\u043b \u043e\u043a\u043d\u043e \u0432 \u0448\u0438\u0440\u0438\u043d\u0443.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0435\u0442, \u0445\u0432\u0430\u0442\u0438\u0442 \u043b\u0438 \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a:\/\/ \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0435 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u0443 \u043e\u043a\u043d\u0430if UIDevice.current.orientation.isLandscape { &#8230; }\u042d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u0441\u0441\u0438\u0438 Modernize your UIKit app (WWDC26-278).Size class \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c\u0438 compact \u0438 regular, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438. compact \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u0435\u0441\u0442\u0430 \u043f\u043e \u044d\u0442\u043e\u0439 \u043e\u0441\u0438 \u043c\u0430\u043b\u043e. regular \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u0435\u0441\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a.traitCollection.horizontalSizeClass  \/\/ .compact \u0438\u043b\u0438 .regulartraitCollection.verticalSizeClass\u042d\u0442\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043f\u043e\u043c\u0435\u0441\u0442\u044f\u0442\u0441\u044f \u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:if traitCollection.horizontalSizeClass == .regular { &#8230; }\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u0443\u0436\u043d\u0430 \u043e\u0434\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0438\u043b\u0438 \u0434\u0432\u0435, \u043d\u0443\u0436\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 size class. \u0414\u043b\u044f \u0442\u043e\u0447\u043d\u044b\u0445 \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 userInterfaceIdiom \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442:if traitCollection.userInterfaceIdiom == .phone { &#8230; }iPhone-only \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 .phone \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043d\u0430 iPad \u0438 \u0447\u0435\u0440\u0435\u0437 Mirroring, \u0445\u043e\u0442\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u0423 universal-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 idiom \u0431\u044b\u0432\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u0441\u0431\u043e\u0440\u043a\u0438.UIRequiresFullScreen \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 resize\u0412 iOS 27 \u044d\u0442\u043e\u0442 \u043a\u043b\u044e\u0447 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0439.&lt;key&gt;UIRequiresFullScreen&lt;\/key&gt;&lt;true\/&gt;\u0414\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0439 resize \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438, \u0430 \u043d\u0435 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u043a\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043f\u043e\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u044f\u043d\u0435\u0442 \u043e\u043a\u043d\u043e.\u042d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a resizable-\u0441\u0440\u0435\u0434\u0430\u043c iOS 27, \u0430 \u043d\u0435 \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041e\u043d \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u043b\u044f \u0438\u0433\u0440, \u043d\u043e \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430 \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e UIRequiresFullScreen \u043f\u043e\u043a\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u0440\u0435\u0436\u0438\u043c\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0434\u0435\u043f\u0440\u0435\u043a\u0430\u0446\u0438\u044e \u0441 iOS 26. \u041d\u043e\u0432\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u043e Modernize your UIKit app (WWDC26-278) \u0438 TN3192, \u0430 \u043f\u043e\u0437\u0436\u0435 \u043f\u043e release notes SDK.\u0414\u043b\u044f \u0438\u0433\u0440 \u0438 canvas \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0439 \u043e\u043a\u043d\u0430. \u0414\u0430\u0436\u0435 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u0439 resize \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u043a\u0430\u043a\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043c\u0438\u0440\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438 \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043f\u043e\u043b\u044f. \u0415\u0441\u043b\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043a\u043d\u043e\u043f\u043e\u043a.\u0418\u0433\u0440\u044b \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0441\u0430\u043c\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438. \u041e\u0431\u044a\u0451\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432\u0451\u0440\u0441\u0442\u043a\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0432\u043e\u0434\u0430.\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u043a\u043d\u0430 \u043d\u0430 iPad \u0438\u043b\u0438 \u0432 Mirroring, \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043a Duo \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u0430.iPhone Duo: \u044d\u043a\u0440\u0430\u043d\u044b, pose \u0438 SDK\u0414\u0432\u0430&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-494762","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/494762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=494762"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/494762\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=494762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=494762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=494762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}