首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone 6和iPhone 6加肖像的Size类

iPhone 6和iPhone 6加肖像的Size类
EN

Stack Overflow用户
提问于 2014-11-21 16:26:05
回答 9查看 13.8K关注 0票数 19

如何使用大小类唯一地识别iPhone 6和iPhone 6以及纵向屏幕?

我的应用程序在iPhone 4和iPhone 5中看起来不错,但由于屏幕大小,iPhone 6和6中有很多空空间。虽然我使用自动布局,但我不能只增加iPhone 6和6+的字体大小或查看大小。我知道我们可以使用size类来更改字体大小和视图大小。但我不知道该怎么办。

我正在使用xCode 6.1,我的应用程序支持从iOS 7到最新的iOS 8.1。我期待解决方案只在故事板,就像我的UI设计完全在故事板。如果故事板有有限的功能,以满足我的需要,请让我知道如何实现与代码通过应用程序?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2014-12-23 09:57:25

根据iPhone类型调整字体大小的另一个选项是使用“用户定义的运行时属性”。

定义UILabel的扩展:

代码语言:javascript
复制
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”属性添加到用户定义的运行时属性列表中(选中“布尔值”并选中复选框)。

对您希望调整的每个标签也要这样做(复制和粘贴在这里会令人惊讶地起作用)。

票数 24
EN

Stack Overflow用户

发布于 2014-11-21 16:33:38

在故事板中使用紧凑的宽度和规则的高度

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

票数 8
EN

Stack Overflow用户

发布于 2015-05-27 05:59:54

在不同的sizeClass设备中,对于不同的字体大小,我对iPhone没有太多的了解,但是我想出了这个解决方案。

  1. 将此方法添加到实用程序类中。
  2. 只需将您的超级视图传递给此方法,此方法是递归的,因此如果您传递self.view,则设置所有子视图。
  3. 根据需要更改字体大小。
代码语言:javascript
复制
-(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];
    }
}
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27065929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档