Is it possible to edit UIAlertAction title font size and style?

前端 未结 2 1249
走了就别回头了
走了就别回头了 2021-01-03 02:36

Now that iOS8 deprecated UIActionsheet and UIAlertview the customization working on iOS7 is not taking effect anymore. So far the only customizatio

相关标签:
2条回答
  • 2021-01-03 02:42

    It is possible to change alert action's font using private APIs. It may get you app rejected, I have not yet tried to submit such code.

    let alert = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)
    
    let action = UIAlertAction(title: "Some title", style: .Default, handler: nil)let attributedText = NSMutableAttributedString(string: "Some title")
    
    let range = NSRange(location: 0, length: attributedText.length)
    attributedText.addAttribute(NSKernAttributeName, value: 1.5, range: range)
    attributedText.addAttribute(NSFontAttributeName, value: UIFont(name: "ProximaNova-Semibold", size: 20.0)!, range: range)
    
    alert.addAction(action)
    
    presentViewController(alert, animated: true, completion: nil)
    
    // this has to be set after presenting the alert, otherwise the internal property __representer is nil
    guard let label = action.valueForKey("__representer")?.valueForKey("label") as? UILabel else { return }
    label.attributedText = attributedText
    
    0 讨论(0)
  • 2021-01-03 02:47

    You can change UIAlertAction's Font and color. First you need to add UILabel Category

    @interface UILabel (FontAppearance)
    @property (nonatomic, copy) UIFont * appearanceFont UI_APPEARANCE_SELECTOR;
    @end
    
    @implementation UILabel (FontAppearance)
    
    -(void)setAppearanceFont:(UIFont *)font {
        if (font)
            [self setFont:font];
    }
    
    -(UIFont *)appearanceFont {
        return self.font;
    }
    
    @end
    

    Category File is also Uploaded on following URL https://www.dropbox.com/s/em91fh00fv3ut4h/Archive.zip?dl=0

    After importing That file You need to call following function.

    UILabel * appearanceLabel = [UILabel appearanceWhenContainedIn:UIAlertController.class, nil];
    [appearanceLabel setAppearanceFont:yourDesireFont]]; 
    

    Above code is tested on Color and font. and that will only valid for iOS8 or greater.

    0 讨论(0)
提交回复
热议问题