#xamarin.forms #xamarin.ios #xamarin.shell
#xamarin.forms #xamarin.ios #xamarin.shell
Вопрос:
Немного странный. Я создал приложение в Xamarin Forms (оболочке), и все отлично работает на Android. Когда я перехожу на новую страницу в ios (физическое устройство iphone 11), экран, кажется, раскрывается и изменяет размер. Я думаю, это связано со свойством безопасной области, используемым в представлениях, которое происходит немного слишком медленно, поскольку кажется, что оно находится в безопасных областях, а затем изменяется, чтобы быть в безопасной зоне.
Не влияет на Android.
Я не могу создать заново в новом проекте, но мой текущий проект требует значительных временных затрат, и я не хочу начинать все сначала… Я не могу повторно вписаться в свой существующий проект, проблема сохраняется.
Ниже приведен пример кода, но странный момент заключается в том, что он, похоже, работает в новом проекте, поэтому я ищу рекомендации о том, что еще можно установить где-нибудь для отладки этой проблемы. Есть мысли? Могу предоставить дополнительные примеры кода по мере необходимости, просто дайте мне знать.
Я пробовал обновлять и понижать рейтинг пакетов и т.д. Никакого эффекта.
Упаковка
Я перемещаюсь с помощью
private async Task ExecuteAddPageCommand()
{
await PushAsync(new AddPagePage());
}
где PushAsync находится в моей baseviewmodel
public async Task<bool> PushAsync(Page page)
{
try
{
await Shell.Current.Navigation.PushAsync(page);
return true;
}
catch
{
await Shell.Current.GoToAsync(Utilities.Routes.ErrorModalPage);
return false;
}
}
И страницы имеют стандартные свойства (пример)
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
ios:Page.UseSafeArea="true"
Visual="Material"
x:Class="namespace:Thing.Views.AddPage"
xmlns:converter="clr-namespace:Thing.Converters"
xmlns:controls="clr-namespace:Thing.Controls"
xmlns:utilities="clr-namespace:Thing.Utilities"
>
<ContentPage.Resources>
<ResourceDictionary>
<converter:IntToEnumConverter x:Key="IntToEnum"/>
<converter:InverseBoolConverter x:Key="InverseBool"/>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"></RowDefinition>
<RowDefinition Height="5*"></RowDefinition>
<RowDefinition Height="1*"></RowDefinition>
</Grid.RowDefinitions>
<controls:PageHeader Grid.Row="0" ShowBackButton="true"
HeaderTitle="New Thing"
HeaderImage="{x:Static utilities:Icons.AddMenuIcon}"
BackCommand="{Binding NavigateBackCommand}"/>
<StackLayout Grid.Row="1">
<Label Text="What do you want to call this?" Style="{StaticResource FormLabel}"/>
<Entry Text="{Binding Name.Value}" Placeholder="E.g. My shiny thing"/>
</StackLayout>
<StackLayout Grid.Row="2" Orientation="Horizontal">
<Button HorizontalOptions="FillAndExpand" Text="Cancel" Command="{Binding NavigateBackCommand}"></Button>
<Button HorizontalOptions="FillAndExpand" Text="Save" Command="{Binding SaveCommand}"></Button>
</StackLayout>
</Grid>
</ContentPage.Content>
</ContentPage>
Комментарии:
1. Вызываем строку
On<iOS>().SetUseSafeArea(true);
.2. Привет, Лукас, спасибо за твое сообщение. Я установил это в xaml каждой требуемой страницы (которая приведена в примере). Отличается ли этот код на c #? Или точно такой же способ настройки свойства, но в коде позади?
3. Они имеют тот же эффект.
4. ОК. Как вы можете видеть в коде, свойство устанавливается в XAML, но я испытываю этот странный всплывающий эффект при загрузке страницы. Что еще может повлиять на это? Существует ли ограничение версии, например 4.5? и т. Д
5. Вы могли бы обновить версию XF до последней и проверить еще раз.
Ответ №1:
У меня была точно такая же проблема, и обновление до последней версии (4.8.1269) не помогло. Кажется, эта проблема была введена в 4.7.1260. Я понизил рейтинг до 4.7.1239, и все снова хорошо.
Комментарии:
1. Я понизил рейтинг до 4.7.1239, но все еще происходит. Мне интересно, является ли это обновлением visual Studio и как-то связано с тем, как оно создается?
2. Похоже, они только что выпустили обновление до версии 4.7 (4.7.1351), которое устраняет эту проблему. Эта версия работает в моем проекте, я надеюсь, что она будет работать и в вашем. Вот примечания к выпуску. github.com/xamarin/Xamarin . Forms / releases /tag/release-4.7.0-sr6
3. я все еще не уверен, в чем причина этой проблемы, поскольку проблема возникла у моего локального клиента, но я встроил ее в Azure DevOps, и она отлично работала! Так что, я думаю, это что-то дополнительное к пакету xamarin. Эта версия 4.7.0 sr6 звучит точно так же, как проблема, так что, надеюсь, она также скоро будет решена локально!