我正试图像这样对iphone X使用效果:
https://xamarinhelp.com/safeareainsets-xamarin-forms-ios/
我的IOS项目中有这个脚本,位于名为Effects
的文件夹中Function DiagSolv(a() As Variant, b() As Variant, c() As Variant, d() As Variant) As Variant
Dim N As Double
N = 9
c(1, 1) = c(1, 1) / b(1, 1)
d(1, 1) = d(1, 1) / b(1, 1)
d(N, 1) = (d(N, 1) - a(N, 1) * d(N - 1, 1)) / (b(N, 1) - a(N, 1) * c(N - 1, 1))
Dim temp As Double
For i = 2 To N - 1 Step 1
temp = b(i, 1) - a(i, 1) * c(i - 1, 1)
c(i, 1) = c(i, 1) / temp
d(i, 1) = (d(i, 1) - a(i, 1) * d(i - 1, 1)) / temp
Next i
Dim x(8, 0) As Variant
x(N - 1, 0) = d(N, 1)
For J = N - 1 To 1 Step -1
x(J - 1, 0) = d(J, 1) - c(J, 1) * x(J, 0)
Next J
DiagSolv = x()
End Function
Sub Solver()
Dim ArrayA() As Variant
ArrayA = Range("AH39:AH47").Value
Dim ArrayB() As Variant
ArrayB = Range("AI39:AI47").Value
Dim ArrayC() As Variant
ArrayC = Range("AJ39:AJ47").Value
Dim ArrayD() As Variant
ArrayD = Range("AK39:AK47").Value
Dim m() As Variant
m() = DiagSolv(ArrayA, ArrayB, ArrayC, ArrayD)
End Sub
在我的xaml中我把它推了出来:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Foundation;
using UIKit;
using Xamarin.Forms;
using neoFly_Montana.iOS;
using neoFly_Montana.iOS.Effects;
[assembly: ResolutionGroupName("MyCompany")]
[assembly: ExportEffect(typeof(SafeAreaPaddingEffect),
nameof(SafeAreaPaddingEffect))]
namespace neoFly_Montana.iOS.Effects
{
public class SafeAreaPaddingEffect : Xamarin.Forms.Platform.iOS.PlatformEffect
{
Thickness _padding;
protected override void OnAttached()
{
if (Element is Layout element)
{
if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
{
_padding = element.Padding;
var insets = UIApplication.SharedApplication.Windows[0].SafeAreaInsets; // Can't use KeyWindow this early
if (insets.Top > 0) // We have a notch
{
element.Padding = new Thickness(_padding.Left + insets.Left, _padding.Top + insets.Top, _padding.Right + insets.Right, _padding.Bottom);
return;
}
}
// Uses a default Padding of 20. Could use an property to modify if you wanted.
element.Padding = new Thickness(_padding.Left, _padding.Top + 20, _padding.Right, _padding.Bottom);
}
}
protected override void OnDetached()
{
if (Element is Layout element)
{
element.Padding = _padding;
}
}
}
}
错误是:
类型效果:在xmlns中找不到SafeAreaPaddingEffect
我在我的pcl项目中创建了这个:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:neoFly_Montana.LayoutScripts"
x:Class="neoFly_Montana.Views.MenuView"
Title="Menu"
xmlns:ffimageloading="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
xmlns:fftransformations="clr-namespace:FFImageLoading.Transformations;assembly=FFImageLoading.Transformations"
NavigationPage.HasNavigationBar="False"
xmlns:effect="clr-namespace:neoFly_Montana.Effects">
<Grid>
<Image Grid.Column="0" Grid.Row="0" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Aspect="Fill" Source="menubackground.jpg"/>
<Grid Grid.Column="0" Grid.Row="0" VerticalOptions="FillAndExpand" RowSpacing="0" HorizontalOptions="FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="6*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<!--<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>-->
<!--Top Grid-->
<Grid Grid.Row="0" HorizontalOptions="FillAndExpand" RowSpacing="0">
<Image Source="topmenu.png" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Aspect="Fill" Grid.Column="0" Grid.Row="0" />
<Grid RowSpacing="0">
<Grid.RowDefinitions>
<RowDefinition Height="7*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<!--sair e user info-->
<Grid RowSpacing="0" Grid.Row="0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Grid.Margin>
<OnPlatform x:TypeArguments="Thickness"
iOS="0,20,0,0"/>
</Grid.Margin>
<!--<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="7*"/>
</Grid.RowDefinitions>-->
<!--sair button-->
<StackLayout Grid.Row="0" Margin="5,5,0,0" VerticalOptions="StartAndExpand" Orientation="Horizontal" HorizontalOptions="Start">
<StackLayout.Effects>
<effect:SafeAreaPaddingEffect />
</StackLayout.Effects>
填充在Iphone X中不起作用。 请有人帮帮我吗?
答案 0 :(得分:0)
它在pcl项目中使用它
public class SafeAreaPaddingEffect : RoutingEffect
{
public SafeAreaPaddingEffect() : base("MyCompany.SafeAreaPaddingEffect")
{
}
}