如何在Xamarin iOS中单独定制UITableView删除按钮的字体与字体系列
嘿,刚好我之前也处理过类似的需求!你现在用TitleForDeleteConfirmation只能修改删除按钮的文本,但要单独定制它的字体且不影响全局,得换个思路,下面给你两个靠谱的方案:
方案一:自定义滑动操作按钮(推荐,iOS 8+支持)
这个方法完全由你掌控按钮样式,字体设置只会作用于这个滑动按钮,绝对不会影响应用其他地方的字体。核心是用EditActionsForRow方法替代默认的删除操作,代码如下:
public override UITableViewRowAction[] EditActionsForRow(UITableView tableView, NSIndexPath indexPath) { // 创建自定义的"Move Out"操作按钮 var moveOutAction = UITableViewRowAction.Create( UITableViewRowActionStyle.Default, "Move Out", (action, index) => { // 这里写你的移出逻辑,比如删除对应行 tableView.DeleteRows(new NSIndexPath[] { index }, UITableViewRowAnimation.Automatic); }); // 可选:设置按钮背景色,和系统默认删除按钮一致的话可以留空 moveOutAction.BackgroundColor = UIColor.Red; // 重点:设置自定义字体和文本样式 var textAttributes = new UIStringAttributes { Font = UIFont.FromName("YourCustomFontFamilyName", 15f), // 替换成你的字体名和字号 ForegroundColor = UIColor.White // 保持系统默认白色文本,也可改成自定义颜色 }; moveOutAction.SetTitleTextAttributes(textAttributes, UIControlState.Normal); return new UITableViewRowAction[] { moveOutAction }; }
这个方案的好处是:不仅能改字体,还能自由调整按钮的背景色、文本颜色等,而且完全独立于其他控件的样式设置。
方案二:用UIAppearance限定范围(适合想保留系统默认按钮样式的场景)
如果你只想改字体,不想改动按钮的整体样式,可以用UIAppearance的范围限定功能,只给目标TableView的删除按钮设置字体:
- 先创建一个自定义UITableView类(仅用来做样式标记,不需要额外逻辑):
public class CustomFontTableView : UITableView { // 空类即可,用来标记我们要设置样式的TableView }
- 在你的ViewController的
ViewDidLoad或者AppDelegate的FinishedLaunching里添加样式设置:
// 只给CustomFontTableView中的删除按钮设置字体 UIBarButtonItem.AppearanceWhenContainedIn(typeof(CustomFontTableView)) .SetTitleTextAttributes(new UIStringAttributes { Font = UIFont.FromName("YourCustomFontFamilyName", 15f) }, UIControlState.Normal);
- 最后把你需要改字体的那个UITableView换成
CustomFontTableView类型,这样就只会影响这个TableView的删除按钮字体,其他地方的字体完全不受影响。
内容的提问来源于stack exchange,提问作者SRIRAM
相关产品推荐
相关产品推荐

