我正在尝试为iOS编写CustomRenderer,我希望在用户触摸按钮时更改按钮的BackgroundColor
。到目前为止我得到了这个:
public class BtnRendereriOS : ButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.BackgroundColor = UIColor.FromRGB(3, 169, 244);
Control.Layer.CornerRadius = 0;
}
Control.TouchUpInside += (sender, UIButton) => {
Control.BackgroundColor = UIColor.Brown;
};
}
}
然而,它没有工作。我想有必要使用某种事件处理程序才能实现这一点。
答案 0 :(得分:1)
背景颜色需要初始设置(如果不是默认颜色),则需要在TouchUpInside
和TouchUpOutside
上将其设置为相同的颜色。在TouchDown
上,将其设置为按下按钮时希望的颜色。
if (Control != null)
{
void BackgroundNormalState(object sender)
{
(sender as UIButton).BackgroundColor = UIColor.Green;
}
BackgroundNormalState(Control);
Control.TouchUpInside += (object sender, EventArgs e) =>
{
BackgroundNormalState(sender);
};
Control.TouchUpOutside += (object sender, EventArgs e) =>
{
BackgroundNormalState(sender);
};
Control.TouchDown += (object sender, EventArgs e) =>
{
(sender as UIButton).BackgroundColor = UIColor.Red;
};
}
我可以通过此方法组更改文本颜色吗?
有一个SetTitleColor
,您可以为不同的UIControlState
值分配不同的颜色,Normal
和Highlighted
是开头的:
Control.SetTitleColor(UIColor.Red, UIControlState.Normal);
Control.SetTitleColor(UIColor.Green, UIControlState.Highlighted);