ios - 更改 IOS Xamarin Forms 中的开关颜色

标签 ios xamarin.forms

切换 IOS Xamarin Forms 时如何更改切换按钮的颜色?自定义渲染将仅设置颜色一次:

Xamarin forms toggle button default color on IOS

并且当切换 Switch 时它不会改变。同样,对于在 AppDelegate.cs 中设置值,只会执行一次。我需要这个:

enter image description here enter image description here

在 IOS 中唯一可能的使用:

UISwitch.Appearance.ThumbTintColor = UIColor.Brown;
UISwitch.Appearance.OnTintColor = UIColor.Red;

但是如果我的交换机位于 PCL 项目中并且其用于 Xamarin Forms,我如何访问该字段。

最佳答案

我解决了这个问题:

public class CustomSwitchRenderer: SwitchRenderer
{       
    protected override void OnElementChanged(ElementChangedEventArgs<Switch> e)
    {
        Element.Toggled += ElementToggled;

        base.OnElementChanged(e);

        if (Control != null)
        {                
            UpdateUiSwitchColor();
        }
    }

    private void ElementToggled(object sender, ToggledEventArgs e)
    {
        UpdateUiSwitchColor();
    }

    private void UpdateUiSwitchColor()
    {
        var temp = Element as Switch;

        if (temp.IsToggled)
        {
            Control.ThumbTintColor = Color.FromHex(ColorConstants.BlueHex).ToUIColor();
            Control.OnTintColor = Color.FromHex(ColorConstants.OblueLightHex).ToUIColor();
        }
        else
        {
            Control.ThumbTintColor =  Color.FromHex(ColorConstants.GrayHex).ToUIColor();
        }
    }
}

因此,每当执行 Toggle 时我都会激活事件:

Element.Toggled += ElementToggled;

关于ios - 更改 IOS Xamarin Forms 中的开关颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49073923/

相关文章:

c# - 如何以 xamarin 形式获取电话号码?

ios - 带有集群注释的 map View

c# - MultiSelectable ListView - ItemSelected 未被调用

ios - 如何在 **spriteKit** 中添加 UIView?

iOS - 使用 auth0 删除同意对话框第 3 方身份验证

azure - 使用资源 token 的 CosmosDb Rest SQL 查询

xamarin - 自定义 ListView 绑定(bind)在 Xamarin.Forms 中不起作用

xamarin.forms - 错误消息: Unable to resolve interface type > 'Android.Gms.Common.Apis.GoogleApiClient/IConnectionCallbacks'

ios - 从未调用过 PFFacebookUtils loginWithPermissions block

iOS 应用程序崩溃,没有任何错误消息