私はMasterDetailPageを使用していますが、メニューとコンテンツページの両方に白い背景があります。だから私は、メニューが表示されているときに、コンテンツページにシャドウセパレータを追加する必要があります。このように:XamarinフォームMasterDetailPageのコンテンツページに影を追加
私は見つけることができる唯一の例がこれです:https://gist.github.com/SeeD-Seifer/120971b4dda7a785a7f4bda928c9dc2b
私は、コードを実装してきた、と影の効果がラベル、画像およびその他の要素に取り組んでいます。しかし、NavigationPageで動作させることはできません。
マイコード:
ShadowEffect.cs
public class ShadowEffect : RoutingEffect
{
public float Radius { get; set; }
public Color Color { get; set; }
public float DistanceX { get; set; }
public float DistanceY { get; set; }
public ShadowEffect() : base("MyCompany.PanelShadowEffect")
{
}
}
ShadowNavigationPage.cs
public ShadowNavigationPage(Page root) : base(root)
{
}
protected override void OnAppearing()
{
base.OnAppearing();
Effects.Add(new ShadowEffect()
{
Radius = 0,
DistanceX = -20,
DistanceY = 0,
Color = Color.Black
});
}
PanelShadowEffect
[assembly: ResolutionGroupName("MyCompany")]
[assembly: ExportEffect(typeof(PanelShadowEffect), "PanelShadowEffect")]
namespace MyApp.iOS.Renderer
{
public class PanelShadowEffect : PlatformEffect
{
protected override void OnAttached()
{
try
{
var effect = (ShadowEffect)Element.Effects.FirstOrDefault(e => e is ShadowEffect);
if (effect == null)
{
return;
}
var control = Control;
if (control == null)
{
var renderer = Platform.GetRenderer((VisualElement)Element);
control = renderer.ViewController.View;
}
control.Layer.CornerRadius = effect.Radius;
control.Layer.ShadowColor = effect.Color.ToCGColor();
control.Layer.ShadowOffset = new CGSize(effect.DistanceX, effect.DistanceY);
control.Layer.ShadowOpacity = .5f;
control.Layer.MasksToBounds = false;
// This doesn't work either
//Container.Layer.CornerRadius = effect.Radius;
//Container.Layer.ShadowColor = effect.Color.ToCGColor();
//Container.Layer.ShadowOffset = new CGSize(effect.DistanceX, effect.DistanceY);
//Container.Layer.ShadowOpacity = .5f;
//Container.Layer.MasksToBounds = false;
}
catch (Exception ex)
{
Console.WriteLine("Cannot set property on attached control. Error: {0}", ex.Message);
}
}
protected override void OnDetached()
{
}
}
}
これは本当に奇妙です。私はちょうどこれを試みた、それはまだ影を示していない..私は今夜新しいプロジェクトで孤立したテストを行い、私の現在のアプリで問題を見つけることができるかどうかを確認しようとします。そして、あなたの答えをどうもありがとう!数時間後に戻ってきます。 –
@MortenOC私はGitHub [ここ](https://github.com/HankiDesign/NavigationPageShadowiOS)に最小サンプルプロジェクトをアップロードしました。それをスピンしてください! – hankide
ありがとう!!あなたはGithubにもそれを加えました。私はこれを必要とする唯一の人になることはできません! :)あなたの例は魅力のように働いた!私はまだ私のプロジェクトがなぜナビゲーションページにレンダリングできないのかを知る必要がある。 –