【发布时间】:2010-11-10 22:18:25
【问题描述】:
有没有办法将默认的UITableViewCellAccessoryDetailDisclosureButton 附件按钮从蓝色变为黑色?
【问题讨论】:
标签: ios iphone objective-c uitableview
有没有办法将默认的UITableViewCellAccessoryDetailDisclosureButton 附件按钮从蓝色变为黑色?
【问题讨论】:
标签: ios iphone objective-c uitableview
没有“标准”的黑色,但按照您的要求做的工作并不多。
创建(在 Photoshop 或类似软件中)您自己的黑色版本的详细信息披露按钮。如果这更容易,您可以屏幕抓取并为其着色。然后将其作为资源添加到您的项目中,并将其放入 UIImage 中,如下所示:
UIImage myImage = [UIImage imageNamed:@"blackbutton.png"];
然后创建一个包含该图像的 UIImageView:
UIImageView *imageView = [[UIImageView alloc] initWithImage:myImage];
最后,您可以将其分配给您已经设置的单元格的“附件视图”:
[cell setAccessoryView:imageView];
希望有帮助!
//编辑 - 我想在 Photoshop 中快速使用 5 分钟,所以为你创建了一个黑色的。玩得开心!
删除了无效的 ImageShack 链接
【讨论】:
h4xxr 的答案在 iOS 5.1.1 中对我来说并不完全有效(点击附件视图并没有调用 tableView:accessoryButtonTappedForRowWithIndexPath 方法),所以我在相关 answer 的帮助下更改了他的解决方案,使用带有图像的UIButton 而不是UIView,如果单击它可以调用自定义选择器:
UIImage *myImage = [UIImage imageNamed:@"blackaccessorybutton.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, myImage.size.width, myImage.size.height);
[button setImage:myImage forState:UIControlStateNormal];
[button addTarget: self
action: @selector(toggleCustomDetailDisclosureButton:)
forControlEvents: UIControlEventTouchUpInside];
[cell setAccessoryView:button];
【讨论】:
iOS7 上有一个更简单的解决方案。使用UIView 上的tintColor 属性。子类通常倾向于尊重它,披露指标也不例外。
UIView *v = [[cell subviews] lastObject];
v = v.subviews.count ? [v.subviews objectAtIndex:0] : nil; // v is the disclosure indicator
if ([v respondsToSelector:@selector(setTintColor:)])
v.tintColor = [UIColor greenColor];
【讨论】: