問題
延續 Xamarin FAQ 1-28 問題,發現到在某些情況下,應用程式在 iOS 平台下執行的時候,會造成導航頁面的頁面說明文字無法置中對齊,而被擠向右方,這是甚麼情況?
解答
會發現這個問題是之前都是使用
iPhone 6 Plus iOS 9.3
Simulator 來進行測試,偶而發現到,當使用了 iPhone 6s iOS 9.3
這個 Simulator 來測試的時候,發現到這樣的問題。
下面四張圖片,分別為從首頁導航到第二頁的頁面截圖,從前面三個畫面截圖可以很清楚的看出,這個頁面的標題文字
這是第二頁
明顯的被往右推過去了,這將會造成使用者覺得這樣的設計十分奇怪;不過,我猜想這應該是 iOS 本身的一個問題,而不是 Xamarin.Forms 這裡的問題。最後一張圖則是我們想要的樣貌,這個頁面的標題是置中的,而且,上一頁的頁面標題則是適當的被截掉。
因此,我個人認為比較好的解決方案,還是要自行定義出回上一頁按鈕名稱,而不需要使用上一頁面的名稱來做為回上一頁按鈕的名稱。
這裡提供另外一個不需要使用 Call behind 的方法,那就是可以在 XAML 頁面中來定義這個回上一頁按鈕的名稱,不過,特別重要的是:
回上一頁按鈕名稱,必須定義在上一頁的XAML中
<?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:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
x:Class="XFNavigationTitle.Views.MainPage"
NavigationPage.BackButtonTitle="回去了"
Title="{Binding PageTitle}">
<StackLayout HorizontalOptions="Fill" VerticalOptions="Start"
Margin="20,20,20,20"
>
<Label Text="{Binding Title}"
Margin="0,0,0,30"/>
<Label Text="這個頁面名稱" />
<Entry Text="{Binding PageTitle}" />
<Button Text="測試回上一頁文字" Command="{Binding 測試回上一頁文字Command}" />
</StackLayout>
</ContentPage>