我观察了一些热门应用。当我们比较iPhone Plus设备和普通设备时,字体和图像会有所不同。在iPhone Plus设备中稍大一点。我们如何在iOS应用程序中实现相同目标?我已经使用了闪屏。但是字体仍然相同,加号和普通设备没有区别。
注意:通过分辨率区分编码工作正常。但我正在寻找其他替代方式,如自适应布局和启动屏幕。
答案 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
附近,您会找到+
按钮,点击它,选择您的变体(尺寸等级)并为该特定尺寸类别设置不同的字体。
请参阅下面的屏幕截图,以便更好地理解,
参考: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以适应标签或文本字段。
答案 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