- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个应用程序使用 UIPageViewController 在首次启动时提供快速指南。UI 构建在 Storyboard中——每个页面都有相同的 nib 和 VC,但文本会发生变化。UILabel 在 Storyboard 中设置了自定义字体 (GothamRounded-Book),它在预览中正确显示。但是,它们在设备上运行时始终显示为系统字体。
经过一些调查,我在标签的字体属性中添加了一个观察者,它会在第一次出现时和页面发生变化时发生变化(水平滚动)。下面的日志记录和堆栈跟踪。
为什么?我该如何阻止它?
viewDidLoad: <UICTFont: 0x14783630> font-family: \"GothamRounded-Book\"; font-weight: normal; font-style: normal; font-size: 17.00pt
viewDidAppear: <UICTFont: 0x14783630> font-family: \"GothamRounded-Book\"; font-weight: normal; font-style: normal; font-size: 17.00pt
change: {
kind = 1;
new = "<UICTFont: 0x1478ab40> font-family: \".HelveticaNeueInterface-Regular\"; font-weight: normal; font-style: normal; font-size: 14.00pt";
old = "<UICTFont: 0x14783630> font-family: \"GothamRounded-Book\"; font-weight: normal; font-style: normal; font-size: 17.00pt";
}
frame #1: 0x2b2d8eba Foundation`NSKeyValueNotifyObserver + 262
...
frame #6: 0x2b2f834e Foundation`-[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 310
frame #7: 0x2e053d20 UIKit`-[_UIAttributeTraitStorage applyRecordsMatchingTraitCollection:] + 296
frame #8: 0x2e053518 UIKit`-[NSObject(_UITraitStorageAccessors) _applyTraitStorageRecordsForTraitCollection:] + 164
frame #9: 0x2df6ade2 UIKit`-[UIView _traitCollectionDidChangeFromOldCollection:toNewCollection:scaleDidChange:] + 58
frame #10: 0x2df6aea0 UIKit`-[UIView _wrappedProcessDidChangeRecursivelyFromOldTraits:toCurrentTraits:scaleDidChange:forceNotification:] + 128
frame #11: 0x2df6b0a0 UIKit`__86-[UIView _processDidChangeRecursivelyFromOldTraits:toCurrentTraits:forceNotification:]_block_invoke + 44
frame #12: 0x2e2fe830 UIKit`-[UIView(AdditionalLayoutSupport) _withUnsatisfiableConstraintsLoggingSuspendedIfEngineDelegateExists:] + 120
frame #13: 0x2df6b068 UIKit`-[UIView _processDidChangeRecursivelyFromOldTraits:toCurrentTraits:forceNotification:] + 252
frame #14: 0x2dccafae UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 510
frame #15: 0x2d6ded28 QuartzCore`-[CALayer layoutSublayers] + 128
frame #16: 0x2d6da55c QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 360
frame #17: 0x2d6da3e4 QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 16
frame #18: 0x2d6d9d80 QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 224
frame #19: 0x2d6d9b6e QuartzCore`CA::Transaction::commit() + 434
frame #20: 0x2d6d3848 QuartzCore`CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 56
frame #21: 0x2a616fec CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 20
...
frame #28: 0x000fc840 MyApp`main(argc=1, argv=0x014a2a74) + 108 at main.m:14
最佳答案
Why?
字体自动调整不适用于自定义字体,这包括任何大小类别的使用或自动收缩设置。如果不使用尺寸等级,则自动收缩没有效果。如果使用尺寸等级,自动收缩始终处于事件状态并将字体重置为系统字体。我已经测试了 Xcode 6.4 和 Xcode 7b3。
How can I stop it?
如果使用任何动态字体大小,则仅在 Storyboard中使用系统字体。覆盖 viewDidLayoutSubviews
以设置您实际需要的字体。如果自定义字体的大小属性与系统字体明显不同,您将需要对计算出的大小进行更正。
- (void)viewDidLayoutSubviews {
self.myLabel.font = [UIFont fontWithName:@"Custom" size:self.myLabel.font.pointSize];
}
关于ios - 为什么 UIPageViewController 的 transition 会改变字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31681207/
尝试添加动画以替换 fragment 时抛出该异常。根据这个答案,stackoverflow ,过渡框架不能应用于 fragment ,但这篇文章表明你可以 How to use Material T
还有其他一些类似的问题,但都涉及 Android 支持库。我正在使用新的 androidx 库。 将 androidx 生命周期依赖项从 2.2.0-alpha03 更新到 2.2.0-alpha04
这个问题在这里已经有了答案: What is an optional value in Swift? (15 个答案) When two optionals are assigned to an i
Tailwind 提供了多个实用程序来控制哪些 CSS 属性转换,在这些属性中有 transition 和 transition-all。 我去检查了两个类的 CSS 属性,这里它们的顺序相同。 tr
Tailwind 提供了多个实用程序来控制哪些 CSS 属性转换,在这些属性中有 transition 和 transition-all。 我去检查了两个类的 CSS 属性,这里它们的顺序相同。 tr
这是一个由两部分组成的问题: 哪种应用样式优先:CSS 中的 -webkit-transition 规则或 jQuery 中类似的 $.css() 方法? 如果我还在 jQuery 中使用 .css
我想知道为什么在 FireFox 中使用 transition: all 0.5s ease-out; 时我会看到元素上的闪烁效果(截至本文撰写时的最新版本)。很难解释,但请在此处查看实际示例:htt
我对 css3 过渡属性的渲染速度有疑问。 假设我有一些元素: div, span, a {transition: all} div {margin: 2px} span {opacity: .5}
我对 css3 过渡属性的渲染速度有疑问。 假设我有一些元素: div, span, a {transition: all} div {margin: 2px} span {opacity: .5}
我目前正在用 Html 制作我的第一个网站,javascript 作为前端将首先出现。 我正在尝试创建一个折叠侧边栏,当我单击顶部导航右侧的按钮时会出现该侧边栏,但我对过渡效果有疑问,因为它会将所有内
我有一个 Activity ,一次托管一个 fragment ,并在两个 fragment 之间交换。 fragment A 使用按钮启动 fragment B, fragment B 使用按钮或后退
我正在尝试创建一种效果: 光标悬停在一个框上 横杆滑出 随着滑动 Action 缓和,标题出现 光标离开方框 随着栏向后滑动,标题开始消失 横杆完成向后滑动 但是,当光标离开框时,会再次调用延迟,因此
让我提供一些背景信息:我正在构建一个选项卡式应用程序,允许用户查找和查看我们服务器上托管的一些视频。每个选项卡都以不同的方式对视频进行分组,导航栏中有一个分段控件,用户可以使用该控件更精确地对列表进行
原始问题...更新了以下工作代码: 我有一个在 ajax 加载事件期间出现的加载图像。图像通过向 body 元素添加或删除“加载”类来显示/隐藏。目前,加载图像将背景大小设置为从 0% 到 100%
我对 css3 过渡属性的渲染速度有疑问。 假设我有一些元素: div, span, a {transition: all} div {margin: 2px} span {opacity: .5}
当我继续学习前端开发和练习 Sass 优化我的 CSS 代码时,我又遇到了另一种情况。 在互联网上进行研究和教程后,我在 Sass 中设置了名为“transition”的全局混合。代码如下所示: @m
关于 Chrome 和 css 转换的问题太多了,我不确定以前是否有人问过这个问题。 我的情况是这样的:我的布局基本上是左右分页。右侧的一框内容需要显示在左侧的内容之上(这个我没有发言权,桌面和移动之
我在两个 Activity 之间的共享元素中使用了自定义 Transition。 我的转换不起作用,因为 TransitionValues 参数在 captureStartValues 和 这两种方法
我在 google Chrome 和 Safari 上运行我的应用程序,两者都兼容 webkit。我正在使用 -webkit-transition 构建一个滚动的 div。 当我将文档类型指定为 HT
以下代码在 chrome 中产生了预期的结果,即;直接向所有元素添加过渡延迟。 $('.front-nav .sub-menu').each(function() { var transiti
我是一名优秀的程序员,十分优秀!