如何使用大小类唯一地识别iPhone 6和iPhone 6以及纵向屏幕?
我的应用程序在iPhone 4和iPhone 5中看起来不错,但由于屏幕大小,iPhone 6和6中有很多空空间。虽然我使用自动布局,但我不能只增加iPhone 6和6+的字体大小或查看大小。我知道我们可以使用size类来更改字体大小和视图大小。但我不知道该怎么办。
我正在使用xCode 6.1,我的应用程序支持从iOS 7到最新的iOS 8.1。我期待解决方案只在故事板,就像我的UI设计完全在故事板。如果故事板有有限的功能,以满足我的需要,请让我知道如何实现与代码通过应用程序?
发布于 2014-12-23 09:57:25
根据iPhone类型调整字体大小的另一个选项是使用“用户定义的运行时属性”。
定义UILabel的扩展:
extension UILabel {
var adjustFontToRealIPhoneSize: Bool {
set {
if newValue {
var currentFont = self.font
var sizeScale: CGFloat = 1
let model = UIDevice.CurrentDevice().modelName()
if model == "iPhone 6" {
sizeScale = 1.3
}
else if model == "iPhone 6 Plus" {
sizeScale = 1.5
}
self.font = currentFont.fontWithSize(currentFont.pointSize * sizeScale)
}
}
get {
return false
}
}
}为了确定当前型号的名称,请参考以下答案:https://stackoverflow.com/a/26962452/4165128
在情节提要上,选择要调整的标签,打开右窗格,选择标识检查器,并将“adjustFontToRealIPhoneSize”属性添加到用户定义的运行时属性列表中(选中“布尔值”并选中复选框)。
对您希望调整的每个标签也要这样做(复制和粘贴在这里会令人惊讶地起作用)。
发布于 2014-11-21 16:33:38
在故事板中使用紧凑的宽度和规则的高度

通过增加乘法器,增加高度和宽度相对于超级视图的布局约束。假设你有图像视图,它的大小是超级视图的一半,然后加上乘法器0.5。

发布于 2015-05-27 05:59:54
在不同的sizeClass设备中,对于不同的字体大小,我对iPhone没有太多的了解,但是我想出了这个解决方案。
-(void)setAllFonts:(UIView *)view
{
CGFloat fontSizeDiff = 0.0;
if (IS_IPHONE_6)
{
fontSizeDiff = 1;
}
else if (IS_IPHONE_6PLUS)
{
fontSizeDiff = 2;
}
for (UIView *vw in [view subviews])
{
if ([vw isKindOfClass:[UILabel class]] || [vw isKindOfClass:[UIButton class]])
{
if ([vw isKindOfClass:[UILabel class]])
{
UIFont *font = [(UILabel *)vw font];
[(UILabel *)vw setFont:[UIFont fontWithName:font.fontName size:font.pointSize+fontSizeDiff]];
}
else
{
UIFont *font = [(UIButton *)vw titleLabel].font;
[(UIButton *)vw titleLabel].font = [UIFont fontWithName:font.fontName size:font.pointSize+fontSizeDiff];
}
}
else if ([vw isKindOfClass:[UIView class]] || [vw isKindOfClass:[UIScrollView class]])
{
[self setAllFonts:vw];
}
}
}https://stackoverflow.com/questions/27065929
复制相似问题