我正在使用大小类和自动布局构建和界面。我遇到的问题之一是我不能再为文本字段使用固定的字体大小 - 在较小的屏幕上可以看到较少的文本。
其中一个解决方案是使用"调整以适应"但是该选项仅在有足够的文本水平溢出文本字段时才有效。
运行时UITextField大小未知时使用的字体大小的正确解决方案是什么?
答案 0 :(得分:3)
我为所有标签使用自定义类,并在设计时分配两个属性。一个是autoFont,另一个是fontSize,它目前是iPhone 4英寸xib在设计时的字体大小。这是班级。
.h文件
#import <UIKit/UIKit.h>
@interface CustomLabel : UILabel
@property (nonatomic) IBInspectable BOOL autoFont;
@property (nonatomic) IBInspectable CGFloat fontSize;
@end
这是.m文件
#import "CustomLabel.h"
@implementation CustomLabel
@synthesize autoFont;
@synthesize fontSize;
- (void)layoutSubviews
{
[super layoutSubviews];
if (autoFont) {
float newFontSize = [UIScreen mainScreen].bounds.size.height * (fontSize / 568.0);
if ([UIScreen mainScreen].bounds.size.height < 500) {
newFontSize = [UIScreen mainScreen].bounds.size.height * (fontSize / 480.0);
}
self.font = [UIFont fontWithName:self.font.fontName size:newFontSize];
}
}
@end
我认为这是解决此类问题的最简单方法,而且我通过自定义类使用按钮和文本字段也做了同样的事情。
答案 1 :(得分:2)
我意识到非界面构建者的灵魂。 您可以获得屏幕高度并相应地设置标签字体。
CGFloat windowHeight = [UIApplication sharedApplication].delegate.window.frame.size.height;
label.font = [UIFont fontWithName:@"Font-Name" size:windowHeight / 10];
答案 2 :(得分:0)
UILabel也有类似的问题。我不知道它是否适用于UITextField。没有足够的声誉来评论,所以在这里。基本上是:
minimumScaleFactor
代替minimumFontSize
请参阅:
How to set font size to fill UILabel height?