iosswifttableviewuitableviewrowaction

Reduce font size for UITableViewRowAction


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.


Solution

  • 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