字体大小类重置为默认值

时间:2015-09-24 04:02:07

标签: ios unity3d uilabel size-classes

我使用Unity制作游戏,并将其与iOS(作为库提供)结合使用,以提供一些原生功能。

我使用我从原始创作者UnityNativePrototype分叉的samizzo。它工作正常,但在我用iPad 2测试之后。事情似乎不对。

iOS和Unity之间的一些集成概念就是这样。我有3个项目

  1. iOS库(故事板,本机代码等)
  2. iOS测试应用程序(使用iOS库并快速测试)
  3. Unity项目(生成Unity游戏的XCode项目)
  4. 每当我想要一起测试所有东西时,我将1.和3.组合在一起。只有2.我用于快速测试,因为在Unity和iOS之间集成最终应用程序需要时间。

    我使用size class在Storyboard中设置UILabel的字体大小。我用2.测试它,它工作正常。但只要我使用集成应用程序对其进行测试就会出现问题UILabel设置回使用我设置的默认字体大小Any:Any。我触摸视图后突然发生了变化。我甚至通过子类化UILabel然后覆盖setFont方法来强制设置正确的字体大小来应用解决方法。它可以工作,但是后面的布局有问题,无论我在视图上调用layoutIfNeeded,它都看起来不像。

    以下是调试日志我打印出来以查看是否有调用将新字体设置为UILabel。它确实......

    2015-09-24 08:11:09.501 ProductName[1475:611412] Some changes going on here...<UICTFont: 0x19177700> font-family: ".SFUIDisplay-Regular"; font-weight: normal; font-style: normal; font-size: 24.00pt
    2015-09-24 08:11:36.896 ProductName[1475:611412] Some changes going on here...<UICTFont: 0x156754a0> font-family: ".SFUIText-Regular"; font-weight: normal; font-style: normal; font-size: 17.00pt
    

    上面,首先它通常设置字体&amp;根据我在Storyboard中设置的字体大小。但随后又召集了它。这一次恢复正常,我不想要。

    以下是调用堆栈。请注意,调用不是从Unity本机支持类,甚至是我自己的项目启动的,这似乎是正常的。

    2015-09-24 09:59:58.265 ProductName[1605:635812] Stracktrace: (
        0   ProductName                         0x00bee2a3 -[UILabelFix setFont:] + 182
        1   Foundation                          0x24fb3e1b <redacted> + 226
        2   UIKit                               0x286559e7 <redacted> + 174
        3   Foundation                          0x24fc62e3 <redacted> + 310
        4   UIKit                               0x287776d7 <redacted> + 322
        5   UIKit                               0x28776d11 <redacted> + 192
        6   UIKit                               0x28648edd <redacted> + 80
        7   UIKit                               0x28648f9f <redacted> + 134
        8   UIKit                               0x28649211 <redacted> + 44
        9   UIKit                               0x28b32f79 <redacted> + 144
        10  UIKit                               0x286491cd <redacted> + 320
        11  UIKit                               0x28359429 <redacted> + 660
        12  QuartzCore                          0x27c2aad1 <redacted> + 128
        13  QuartzCore                          0x27c261cd <redacted> + 348
        14  QuartzCore                          0x27c26061 <redacted> + 16
        15  QuartzCore                          0x27c25581 <redacted> + 368
        16  QuartzCore                          0x27c25243 <redacted> + 590
        17  QuartzCore                          0x27c771cf <redacted> + 762
        18  IOMobileFramebuffer                 0x2dab857b <redacted> + 86
        19  IOKit                               0x2534df29 IODispatchCalloutFromCFMessage + 256
        20  CoreFoundation                      0x2424b0d9 <redacted> + 132
        21  CoreFoundation                      0x2425d3f3 <redacted> + 34
        22  CoreFoundation                      0x2425cb07 <redacted> + 342
        23  CoreFoundation                      0x2425af19 <redacted> + 1688
        24  CoreFoundation                      0x241ae249 CFRunLoopRunSpecific + 520
        25  CoreFoundation                      0x241ae035 CFRunLoopRunInMode + 108
        26  GraphicsServices                    0x2d277ad1 GSEventRunModal + 160
        27  UIKit                               0x283c38a9 UIApplicationMain + 144
        28  ProductName                         0x000c16bb main + 202
        29  libdyld.dylib                       0x3635e873 <redacted> + 2
    )
    

    这可能是什么问题?为什么UIKit决定再次将UILabel更新回正常而不是预期的行为?

    我怀疑Unity的本机支持课程可能会参与其中,但在看到上述内容之后,我不这么认为。 对于那些针对不同字体大小设置了多个大小类的用户,此问题适用于所有UILabel

    FYI :我使用Xcode 7.0(7A220)和Unity 5.2.1f1。

0 个答案:

没有答案