我需要创建一个带有图片和文字的操作按钮。下图提供 一个例子。
![1]:https://i.stack.imgur.com/KEuHn.png
我创建了
之类的方法public UIContextualAction ContextualFlagAction(int row)
{
var action = UIContextualAction.FromContextualActionStyle(UIContextualActionStyle.Normal, "Flag", Handler);
(contextualAction, view, handler) =>
{
Console.WriteLine("Hello World!");
handler(false);
});
action.Image = UIImage.FromFile(ResourceIdentifiers.DocumentIcon);
return action;
}
但这不是我需要做的。
我如何将该动作自定义为上面的图像。
答案 0 :(得分:0)
也许您的问题显示为图像结果,您的代码已设置action.image
如果您的图像包含图片和标签,则图片向上,标签向下,那么您就会想要。
public UIContextualAction ContextualFlagAction(int row)
{
var action = UIContextualAction.FromContextualActionStyle(UIContextualActionStyle.Normal, "Flag", Handler);
(contextualAction, view, handler) =>
{
Console.WriteLine("Hello World!");
handler(false);
});
action.Image = UIImage.FromFile(ResourceIdentifiers.DocumentIcon);
//this is your setted image
return action;
}
您可以在Xamarin.ios中自定义TableViewCell。
在UITableViewCell中编写以下方法,在viewcell中重写 DidTransitionToState 方法,您可以将操作替换为按钮
private UITableView tableViewThis;
public TableViewCellClass(UITableView tableView)
{
this.tableViewThis = tableView;
}
public override void DidTransitionToState(UITableViewCellState mask)
{
base.DidTransitionToState(mask);
if ((mask & UITableViewCellState.ShowingDeleteConfirmationMask) == UITableViewCellState.ShowingDeleteConfirmationMask)
{
foreach (UIView subview in tableViewThis.Subviews)
{
if (subview.Class.Equals("UIContextualAction"))
//Delete the delete button of the system
tableViewThis.WillRemoveSubview(subview);
subview.BackgroundColor = UIColor.Clear;
UIButton editBtn = new UIButton(UIButtonType.Custom);
editBtn.Frame = new CGRect(10, 4, 50, 65);
editBtn.SetBackgroundImage(UIImage.FromFile("1.png"), UIControlState.Normal);
editBtn.AdjustsImageWhenHighlighted = false;
editBtn.TouchUpInside += (sender, e) =>
{
//do something you need
};
subview.AddSubview(editBtn);
}
}
}
UIButton可以设置标题和图像。 UIButton具有两个属性:
titleEdgeInsets (顶部,左侧,底部,右侧)
和 imageEdgeInsets (顶部,左侧,底部,右侧)。
通过设置这两个,您可以实现所需的样式。