我使用Unity制作游戏,并将其与iOS(作为库提供)结合使用,以提供一些原生功能。
我使用我从原始创作者UnityNativePrototype分叉的samizzo。它工作正常,但在我用iPad 2测试之后。事情似乎不对。
iOS和Unity之间的一些集成概念就是这样。我有3个项目
每当我想要一起测试所有东西时,我将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。