通过 AccessibilityIdentifier 实现图片按钮单一事件多状态间切换 - iOS

经常会遇到图片样式按钮需要进行切换状态的操作(例如:播放器的开始和暂停),若文字的按钮可以通过按钮的 textLable.text 方式来进行区分,那么图片按钮如何通过单一事件控制多种状态,可以尝试如下方式;
首先,正常搭建一个按钮并对其设置 AccessibilityIdentifier 属性标识符;

- (UIButton *)btnPlay {
    if (!_btnPlay) {
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        [btn setImage:[[UIImage imageNamed:@"Adio_Player_light"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
             forState:UIControlStateNormal];
        [btn.imageView setAccessibilityIdentifier:@"play"]; // 通过 AccessibilityIdentifier 属性对其设置初始标识符
        [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
        _btnPlay = btn;
    }
    return _btnPlay;
}

其次,在点击事件中继续根据事件触发的不同状态依次设置对应的 AccessibilityIdentifier 即可;

#pragma mark - Event
- (void)btnClick:(UIButton *)btn {
    NSLog(@"%@", [btn.imageView accessibilityIdentifier]);
//    NSString *btnTit = [NSString stringWithFormat:@"%@", btn.titleLabel.text];
    NSString *btnIdentifier = [NSString stringWithFormat:@"%@", [btn.imageView accessibilityIdentifier]];
    if ([btnIdentifier isEqualToString:@"play"]) {
        [_player play];
//        [btn setTitle:@"暂停" forState:UIControlStateNormal];
        [btn setImage:[[UIImage imageNamed:@"Adio_Pause_light"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
        [btn.imageView setAccessibilityIdentifier:@"pause"];
    } else {
        [_player pause];
//        [btn setTitle:@"播放" forState:UIControlStateNormal];
        [btn setImage:[[UIImage imageNamed:@"Adio_Player_light"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
        [btn.imageView setAccessibilityIdentifier:@"play"];
    }
}

最后,以上例子是以播放器播放状态为例,实际具体业务还需具体分析,以上方法可供大家参考借鉴。


以上便是此次分享的全部内容,希望能对大家有所帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值