gpt4 book ai didi

ios - 我们如何在 Xamarin Forms 上设置 IOS 的默认 ListView 选择颜色?

转载 作者:行者123 更新时间:2023-11-28 23:59:48 24 4
gpt4 key购买 nike

我已经在我的项目中尝试了此处所述的自定义渲染器 https://blog.falafel.com/adding-transparency-listview-ios-xamarin-forms-custom-renderer/

https://learn.microsoft.com/en-us/xamarin/xamarin-forms/platform/ios/theme我在 app delegate.cs 文件的完成启动函数中放置了以下代码 //切换

UISwitch.Appearance.OnTintColor = UIColor.FromRGB(0x91, 0xCA, 0x47); // green
UITableViewCell.Appearance.TintColor=UIColor.Yellow

但两者都无济于事。用户界面似乎没有任何变化,我不确定我是否遗漏了什么。有谁能帮我解决这个问题吗?

最佳答案

我已经尝试了网络上所有可能的方法(我认为)。唯一有效的方法是制作一个带有触摸内部事件的 BoxView,当用户触摸 BoxView 时会触发该事件。然后将该 BoxView 添加到单元格的背景中(假设您正在为 TableView 或 ListView 使用自定义单元格)。之后,每当用户触摸 BoxView 时,您都必须更改它的 Color 属性。

由于 Xamarin 表单不支持除点击之外的任何触摸手势。我们需要创建自己的。

  • 如何创建自定义 BoxView

iOS 渲染器(在 Xamarin.iOS 中):

using System;
using something;
using something.iOS;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(MyBoxView), typeof(MyBoxViewRenderer))]
namespace something.iOS
{
public class MyBoxViewRenderer : BoxRenderer
{
public MyBoxViewRenderer()
{
}

public override void TouchesBegan(Foundation.NSSet touches, UIEvent evt)
{
if (Element == null)
return;

var touch = touches.AnyObject as UITouch;
(Element as MyBoxView).SendTouchEvent(Element as MyBoxView, true);
}

public override void TouchesEnded(Foundation.NSSet touches, UIEvent evt)
{
if (Element == null)
return;

var touch = touches.AnyObject as UITouch;
(Element as MyBoxView).SendTouchEvent(Element as MyBoxView, false);
}

public override void TouchesCancelled(Foundation.NSSet touches, UIEvent evt)
{
if (Element == null)
return;

var touch = touches.AnyObject as UITouch;
(Element as MyBoxView).SendTouchEvent(Element as MyBoxView, false);
}
}
}

MyBoxView:

using System;
using Xamarin.Forms;

namespace something
{
public class MyBoxView : BoxView
{
public event TouchChanged OnTouchChanged = delegate { };
public delegate void TouchChanged(object sender, bool IsTouched);

public void SendTouchEvent(object sender, bool IsTouched)
{
OnTouchChanged(sender, IsTouched);
}

public MyBoxView()
{
}
}
}

希望对您有所帮助!

关于ios - 我们如何在 Xamarin Forms 上设置 IOS 的默认 ListView 选择颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49890811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com