【发布时间】:2018-05-10 14:03:39
【问题描述】:
我制作了一个自定义渲染器,用于在用户单击我的按钮时更改 TitleColor 和 BackgroundColor。
由于某种原因,当按钮获得焦点时,TitleColor 变得或多或少透明,并且我的背景不像我的TitleColor 那样具有动画效果。
这是我的代码:
public class BtnRendereriOS : ButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.Layer.CornerRadius = 0;
BackgroundNormalState(Control);
Control.TouchUpInside += (object sender, EventArgs c) =>
{
BackgroundNormalState(sender);
};
Control.TouchUpOutside += (object sender, EventArgs c) =>
{
BackgroundNormalState(sender);
};
Control.TouchDragOutside += (object sender, EventArgs c) =>
{
BackgroundNormalState(sender);
};
Control.TouchDragInside += (object sender, EventArgs c) =>
{
BackgroundChangedState(sender);
};
Control.TouchDown += (object sender, EventArgs c) =>
{
BackgroundChangedState(sender);
};
void BackgroundNormalState(object sender)
{
Action a = () => Control.SetTitleColor(UIColor.FromRGB(255,255,255), UIControlState.Normal);
UIView.PerformWithoutAnimation(a);
(sender as UIButton).BackgroundColor = UIColor.FromRGB(3, 169, 244);
}
void BackgroundChangedState(object sender)
{
Action a = () => Control.SetTitleColor(UIColor.FromRGB(0,0,0), UIControlState.Highlighted);
UIView.PerformWithoutAnimation(a);
(sender as UIButton).BackgroundColor = UIColor.FromRGB(104, 206, 253);
}
}
}
}
目前,我已经从TitleColor 中删除了动画。
我的问题是:
- 如何向我的
BackgroundColor添加与TitleColor上的默认转换类似的相同转换? - 如何在按钮获得焦点时从
TitleColor中移除“透明度”?
【问题讨论】:
标签: xamarin xamarin.forms xamarin.ios