SwiftUI изменяет позицию вида программно - PullRequest
0 голосов
/ 11 апреля 2020

Swift 5, iOS 13

Вопрос SwiftUI

Я хочу записать позицию представления при его создании. Я хочу сохранить позицию, потому что мне нужна возможность переместить ее туда, если я нажму кнопку сброса. Представление, о котором идет речь, является перетаскиваемым. Я могу использовать читатель Geometry, чтобы получить его координаты при создании, установив их с атрибутом .appear. И я могу использовать атрибут позиции, чтобы поместить его в точку X.

Но если я использую позицию, мне нужно дать ей координаты. И если я даю ему координаты, я не могу разместить его, используя что-то вменяемое, как HStack. Мне нужно, чтобы атрибут позиции игнорировался при первом запуске, а затем применялся каждый раз впоследствии.

Это похоже на проблему с курицей и яйцом. Кто-нибудь решил это? Дикая мысль, могу ли я использовать смещение возможно?

1 Ответ

1 голос
/ 11 апреля 2020

Мне кажется, ваше дикое предположение об использовании модификатора .offset(x:y:) ставит вас на правильный путь.

Получите позицию из прокси-сервера GeometryReader для рассматриваемого представления в .onAppear{} и восстановите ее используя .offset.

Этот мой предыдущий ответ делает это, используя только ось X, должно быть достаточно легко применить его и к оси Y: { ссылка }

Если вам нужны дополнительные рекомендации, рассмотрите возможность размещения кода, готового для копирования и вставки в Xcode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...