| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- //
- // UIAlertController+TUICustomStyle.m
- // TUIChat
- //
- // Created by wyl on 2022/10/20.
- // Copyright © 2023 Tencent. All rights reserved.
- //
- #import <TIMCommon/TIMDefine.h>
- #import <objc/runtime.h>
- #import "UIAlertController+TUICustomStyle.h"
- @implementation TUICustomActionSheetItem
- - (instancetype)initWithTitle:(NSString *)title leftMark:(UIImage *)leftMark withActionHandler:(void (^)(UIAlertAction *action))actionHandler {
- self = [super init];
- if (self) {
- _title = title;
- _leftMark = leftMark;
- _actionHandler = actionHandler;
- }
- return self;
- }
- @end
- CGFloat padding = 10;
- CGFloat itemHeight = 57;
- CGFloat lineHeight = 0.5;
- CGFloat itemCount = 2;
- @interface UIAlertController ()
- @end
- @implementation UIAlertController (TUICustomStyle)
- - (void)configItems:(NSArray<TUICustomActionSheetItem *> *)items {
- CGFloat alertVCWidth = self.view.frame.size.width - 2 * padding;
- if (items.count > 0) {
- for (int i = 0; i < items.count; i++) {
- UIView *itemView = [[UIView alloc] init];
- itemView.frame = CGRectMake(padding, (itemHeight + lineHeight) * i, alertVCWidth - 2 * padding, itemHeight);
- itemView.userInteractionEnabled = NO;
- [self.view addSubview:itemView];
- UIImageView *icon = [[UIImageView alloc] init];
- [itemView addSubview:icon];
- icon.contentMode = UIViewContentModeScaleAspectFit;
- icon.frame = CGRectMake(kScale390(20), itemHeight * 0.5 - kScale390(30) * 0.5, kScale390(30), kScale390(30));
- icon.image = items[i].leftMark;
- UILabel *l = [[UILabel alloc] init];
- l.frame = CGRectMake(icon.frame.origin.x + icon.frame.size.width + padding + kScale390(15), 0, alertVCWidth * 0.5, itemHeight);
- l.text = items[i].title;
- l.font = [UIFont systemFontOfSize:17];
- l.textAlignment = isRTL()? NSTextAlignmentRight:NSTextAlignmentLeft;
- l.textColor = [UIColor systemBlueColor];
- l.userInteractionEnabled = false;
- [itemView addSubview:l];
-
- if (isRTL()) {
- [icon resetFrameToFitRTL];
- [l resetFrameToFitRTL];
- }
- }
- }
- // actions
- if (items.count > 0) {
- for (int i = 0; i < items.count; i++) {
- UIAlertAction *action = [UIAlertAction actionWithTitle:@"" style:items[i].actionStyle handler:items[i].actionHandler];
- [self addAction:action];
- }
- }
- }
- @end
|