如何在Swift的plus设备上增加字体和大小?

时间:2017-11-27 04:58:24

标签: ios autolayout splash-screen iphone-6-plus

我观察了一些热门应用。当我们比较iPhone Plus设备和普通设备时,字体和图像会有所不同。在iPhone Plus设备中稍大一点。我们如何在iOS应用程序中实现相同目标?我已经使用了闪屏。但是字体仍然相同,加号和普通设备没有区别。

注意:通过分辨率区分编码工作正常。但我正在寻找其他替代方式,如自适应布局和启动屏幕。

3 个答案:

答案 0 :(得分:2)

只需为每个控制器创建自定义类。下面,我为UIButton创建csutom类,您也可以为其他控件创建相同的类。

<强> HSCustomButton.h

#import <UIKit/UIKit.h>

@interface HSCustomButton : UIButton

@end

<强> HSCustomButton.m

#import "HSCustomButton.h"
#define SCALE_FACTOR_H ([UIScreen mainScreen].bounds.size.height / 667) 


@implementation HSCustomButton

- (id)initWithCoder:(NSCoder *)aDecoder {
    if( (self = [super initWithCoder:aDecoder]) ){
        [self layoutIfNeeded];
        [self configurefont];
    }
    return self;
}

- (void) configurefont {
    CGFloat newFontSize = (self.titleLabel.font.pointSize * SCALE_FACTOR_H);
    self.titleLabel.font = [UIFont fontWithName:self.titleLabel.font.fontName size:newFontSize];
}
@end

只需在故事板中更改类名,然后自动为所有其他设备进行字体缩放。

答案 1 :(得分:1)

您可以使用界面构建器(xib或storyboard)执行此操作!

选择您的标签或文字字段等,然后转到attribute inspector

font附近,您会找到+按钮,点击它,选择您的变体(尺寸等级)并为该特定尺寸类别设置不同的字体。

请参阅下面的屏幕截图,以便更好地理解,

enter image description here

参考:Size classes in Interface Builder in Xcode 8

例如Compact width, Regular height此变体或尺寸类适用于纵向模式下的所有iphone!

您可以参考Apple documentation了解有关尺寸等级的更多详情!

您可以做的第二件事是将autoshrink设置为minimum font scale并将字体缩放设置为0 to 1

然后在界面构建器中设置较大的字体(要在应用的plus或pro设备中显示的最大字体大小)。现在,当您的应用程序在小型设备中打开时,您的字体大小将尝试使用该最小比例因子进行缩减。例如,如果您在故事板中设置了比例因子0.5并且字体大小为100,那么在小型设备中,它会尝试将字体大小减小到50以适应标签或文本字段。

enter image description here

答案 2 :(得分:0)

创建UILabel的类别类或任何其他控件(UIButton,UITextField等)。

<强>的UILabel + DynamicFontSize.h

 #import <UIKit/UIKit.h>

 @interface UILabel (DynamicFontSize)
 @property (nonatomic) IBInspectable BOOL adjustFontSize;
 @end

<强>的UILabel + DynamicFontSize.m

 #import "UILabel+DynamicFontSize.h"

 @implementation UILabel (DynamicFontSize)
 @dynamic adjustFontSize;
 -(void)setAdjustFontSize:(BOOL)adjustFontSize{
     if (adjustFontSize)
     {
        CGRect screenBounds = [[UIScreen mainScreen] bounds];
        self.font = [self.font fontWithSize:self.font.pointSize*(screenBounds.size.width/320)]; // 320 for iPhone 5(320x568) storyboard design
        // if you design with iphone 6(375x667) in storyboard, use 375 instead of 320 and iphone 6 plus(414x736), use 414
     }
   }
 @end

<强>用法

选择任何标签并查找属性名称调整字体大小更改值为ON

enter image description here