Reduce font size for UITableViewRowAction

712 Views Asked by At

When looking at the Apple "Mail" app, the fonts of the row actions is around 20% smaller than the default ones. How can I get the same font size in swift?

Here is the view hierarchy:

<UITableViewCellDeleteConfirmationView: 0x14ed4edf0; frame = (320 0; 254 77.5); clipsToBounds = YES; autoresize = H; layer = <CALayer: 0x170620340>>
   | <_UITableViewCellActionButton: 0x14ed190f0; frame = (155 0; 99 77.5); opaque = NO; autoresize = H; layer = <CALayer: 0x170622a00>>
   |    | <UIButtonLabel: 0x14ed36920; frame = (15 28; 69 21.5); text = 'Delete'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x17029ce30>>
   | <_UITableViewCellActionButton: 0x14ed50380; frame = (71.5 0; 83.5 77.5); opaque = NO; autoresize = H; layer = <CALayer: 0x170436ec0>>
   |    | <UIButtonLabel: 0x14ed45a50; frame = (15 28; 53.5 21.5); text = 'Edit'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x17009d4c0>>
   | <_UITableViewCellActionButton: 0x14ed5a320; frame = (0 0; 71.5 77.5); opaque = NO; autoresize = H; layer = <CALayer: 0x170439940>>
   |    | <UIButtonLabel: 0x14ed422b0; frame = (15 28; 41.5 21.5); text = 'More'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x170296760>>

Can I access the UIButtonLabels somehow?

Tried so far:

I tried changing the appearance, but it seems not defined for this element.

Writing an extension for UILabel that changes font on layoutSubviews worked, but it also changed all other UILabels.

1

There are 1 best solutions below

0
On BEST ANSWER

Objc code

+ (NSArray*)findAllButtonLabelFromCell:(UITableViewCell*)cell {
    NSMutableArray* buttonLabels = [[NSMutableArray alloc]init];
    [self addButtonLabelToArray:buttonLabels view:cell];
    return buttonLabels;
}

+ (void)addButtonLabelToArray:(NSMutableArray*)arr view:(UIView*)view {
    //For pass Apple examine
    //contact the name in runtime
    NSString* prefix = @"UIButton";
    NSString* suffix = @"Label";
    NSString* name = [prefix stringByAppendingString:suffix];
    for (UIView* subView in view.subviews) {
        if ([subView isKindOfClass:NSClassFromString(name)]) {
            [arr addObject:subView];
        }
        [self addButtonLabelToArray:arr view:subView];
    }
}

and you should access the return array elements with UILabel