通过在 modifyCell 中用新的 sf 符号 chevron.right 替换 V 形颜色来更改它

Posted

技术标签:

【中文标题】通过在 modifyCell 中用新的 sf 符号 chevron.right 替换 V 形颜色来更改它【英文标题】:Change chevron color by replacing it in modifyCell with new sf symbol chevron.right 【发布时间】:2019-12-05 18:41:44 【问题描述】:

我想将系统图像chevron.right 用作我的附件图标并替换当前存在的图标以便我可以控制颜色。现在ios 13+ 的色调没有像文本那样更新,以前的版本可以工作。我需要在objective c 中完成此操作,而不是快速,使用系统映像sf symbol chevron.right

- (void)modifyCell:(UITableViewCell*)tableCell andIndex:(NSIndexPath *)indexPath 

    Event *event = [self findDataInRow:[self findRow:indexPath]];

    if(event != nil)
    
        EventsTableViewCell *eventTableCell = (EventsTableViewCell *)tableCell;

        if(eventTableCell != nil)
        

        
    

【问题讨论】:

【参考方案1】:

当您返回单元格时,您需要操作出队的UITableViewCellaccessoryView 的颜色:

- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath

所以在一个简单的数据源实现中。

@implementation XViewController

- (UIColor *)colorForIndex:(NSInteger)index 
    NSArray *colors = @[UIColor.redColor,UIColor.greenColor,UIColor.blueColor];
    return colors[index % 3];



- (void)viewDidLoad 
    [super viewDidLoad];
    self.view.tintColor = [UIColor orangeColor];



- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    cell.textLabel.text = @"hello world";
    cell.imageView.image = [UIImage systemImageNamed:@"pencil.slash"];
    UIImageView *accessory = [[UIImageView alloc] initWithImage:[UIImage systemImageNamed:@"pencil.and.outline"]];
    accessory.tintColor = [self colorForIndex:indexPath.row];
    cell.accessoryView = accessory;

    return cell;


- (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    return 6;



@end

选择您喜欢的系统映像,而不是 "pencil.and.outline",这只是为了证明它不是标准的 V 形。观察 LHS 单元图像采用 orange 的视图色调,而 RHS 上的辅助视图采用您想要的任何颜色。

【讨论】:

使用 chevron 的全部原因是因为在 iOS 13 中无法再更改附件图标的颜色。这非常有效。我不得不将它包装在 @available(iOS 13.0, *) 中,但这正是我们所需要的。

以上是关于通过在 modifyCell 中用新的 sf 符号 chevron.right 替换 V 形颜色来更改它的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的核心数据模型中使用 SF 符号? [关闭]

如何正确创建 SF 符号?

是否可以在UIImage之外使用SF符号?

使用 SVG 时出现 SF 符号不可用警告

SF符号在约束下表现得很奇怪[重复]

SwiftUI - 如何在文本视图中更改自定义 SF 符号的颜色?