iOS 长宽比限制在 iOS 7 上被打破,在 iOS 8 上工作

2024-02-24

在我的应用程序中,我设置了 UIView 的约束,其高度是使用宽高比约束从其宽度计算出来的。它在各种设备屏幕尺寸(3.5、4、4.7、5.5)的 iOS8 上完美运行,但它会导致应用程序在每个 iOS7 设备上崩溃。

我认为这是纵横比约束,因为如果我用固定高度约束替换它,它就不会再崩溃(显然它在某些设备上看起来很糟糕)。

堆栈跟踪非常长,所以我只复制其中的一部分。

预先感谢您的帮助!

Objective: {objective 0x7f9d90da33c0: <750:4692, 251:2936, 250:367> + <251:-1>*0x7f9d90c06220.marker{id: 592} + <251:-1>*0x7f9d90c24420.marker{id: 599} + <251:-1>*0x7f9d90c25650.marker{id: 594} + <251:-1>*0x7f9d90c27ad0.marker{id: 597} + <750:-1>*0x7f9d90c3b270.marker{id: 483} + <250:-3.9875>*0x7f9d90c43e40.marker{id: 618} + <250:-3.9875>*0x7f9d90c43e90.marker{id: 620} + <750:-4>*0x7f9d90c442e0.marker{id: 479} + <251:1>*0x7f9d90c464b0.marker{id: 485} + <251:-1>*0x7f9d90c46bf0.marker{id: 504} + <251:-1>*0x7f9d90c46c90.marker{id: 508} + <251:-1>*0x7f9d90c46ce0.marker{id: 510} + <251:-1>*0x7f9d90c46d80.marker{id: 514} + <251:-2>*0x7f9d90c4aa60.marker{id: 623} + <251:-2>*0x7f9d90c4aab0.marker{id: 625} + <251:-2, 250:-3.9875>*0x7f9d90c4ab50.marker{id: 631} + <251:-2, 250:-3.9875>*0x7f9d90c4abf0.marker{id: 634} + <251:4, 250:3.9875>*0x7f9d90c4ac40.marker{id: 637} + <251:4, 250:3.9875>*0x7f9d90c4ac90.marker{id: 642} + <750:1, 251:1>*0x7f9d90c4c530.negError{id: 645} + <750:1, 251:1>*0x7f9d90c4cb20.posErrorMarker{id: 646} + <750:1, 251:1>*0x7f9d90c530f0.negError{id: 649} + <750:1, 251:1>*0x7f9d90c53150.negError{id: 651} + <750:1, 250:1>*0x7f9d90c53820.posErrorMarker{id: 652} + <750:1, 250:1>*0x7f9d90c538a0.posErrorMarker{id: 654} + <750:1, 250:1>*0x7f9d90c53fd0.posErrorMarker{id: 656} + <750:1, 250:1>*0x7f9d90c54070.posErrorMarker{id: 658} + <750:1, 251:1>*0x7f9d90c54650.negError{id: 661} + <750:1>*0x7f9d90c546b0.negError{id: 663} + <251:1>*0x7f9d90c546b0.posErrorMarker{id: 662} + <750:1>*0x7f9d90c55230.negError{id: 665} + <251:1>*0x7f9d90c55230.posErrorMarker{id: 664} + <750:1, 251:1>*0x7f9d90c552b0.negError{id: 667} + <750:1, 251:1>*0x7f9d90d34300.posErrorMarker{id: 916} + <750:1>*0x7f9d90de48a0.marker{id: 738} + <250:-1>*0x7f9d90de48f0.marker{id: 740} + <250:-1>*0x7f9d90de4940.marker{id: 744} + <750:1>*0x7f9d90de4990.marker{id: 745} + <750:1>*0x7f9d90de4c70.marker{id: 718} + <750:1>*0x7f9d90de4cc0.marker{id: 720} + <250:-1

...

 Integralization Adjustments:
0x7f9d93042a90.marker{id: 532} [<NSLayoutConstraint:0x7f9d93042a90 UIView:0x7f9d9303d590.width == 1.50943*UIView:0x7f9d9303d590.height>] -> 0.132066
0x7f9d93042c70.marker{id: 546} [<NSLayoutConstraint:0x7f9d93042c70 UIButton:0x7f9d90de27a0.height == UIButton:0x7f9d93018ab0.height>] -> 1.000000
0x7f9d93042d60.marker{id: 552} [<NSLayoutConstraint:0x7f9d93042d60 UIButton:0x7f9d9303dbf0.width == UIButton:0x7f9d93018ab0.width>] -> -1.000000
0x7f9d93042db0.marker{id: 554} [<NSLayoutConstraint:0x7f9d93042db0 UIButton:0x7f9d9303dbf0.height == UIButton:0x7f9d93033b40.height>] -> 1.000000
0x7f9d93042ea0.marker{id: 562} [<NSLayoutConstraint:0x7f9d93042ea0 UIButton:0x7f9d93033b40.width == UIButton:0x7f9d9303c500.width>] -> -1.000000
0x7f9d930431c0.marker{id: 581} [<NSLayoutConstraint:0x7f9d930431c0 UIButton:0x7f9d9303c500.height == UIButton:0x7f9d93045880.height>] -> 1.000000

  Statistics:
    195 rows. Variable counts:
          1 ->  59
          2 ->  28
          3 ->   3
          4 ->   7
          5 ->   4
          6 ->   3
          7 ->   3
          8 ->   4
          9 ->   8
         10 ->  10
         11 ->  11
         12 ->  10
         13 ->   7
         14 ->   2
         15 ->   3
         16 ->  10
         17 ->  17
         18 ->   6
}: internal error.  Cannot find an outgoing row head for incoming head UIView:0x7f9d930332a0.Height{id: 981}, which should never happen.'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000011284d495 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000011220699e objc_exception_throw + 43
    2   CoreFoundation                      0x000000011284d2ad +[NSException raise:format:] + 205
    3   Foundation                          0x0000000110dfb054 -[NSISEngine minimizeConstantInObjectiveRowWithHead:] + 178
    4   Foundation                          0x0000000110dfaf22 -[NSISEngine optimize] + 147
    5   Foundation                          0x0000000110f432e3 -[NSISEngine withBehaviors:performModifications:] + 192
    6   UIKit                               0x000000011126f889 -[UIView(Hierarchy) _postMovedFromSuperview:] + 321
    7   UIKit                               0x000000011126df42 __UIViewWasRemovedFromSuperview + 206
    8   UIKit                               0x000000011126db9e -[UIView(Hierarchy) removeFromSuperview] + 218
    9   UIKit                               0x0000000111330069 -[UINavigationController navigationTransitionView:didEndTransition:fromView:toView:] + 320
    10  UIKit                               0x0000000111328fdd __49-[UINavigationController _startCustomTransition:]_block_invoke + 138
    11  UIKit                               0x000000011187ec2a -[_UIViewControllerTransitionContext completeTransition:] + 78
    12  UIKit                               0x0000000111211da4 __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke103 + 605
    13  UIKit                               0x00000001112746e8 -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:] + 299
    14  UIKit                               0x000000011126068e -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 235
    15  UIKit                               0x0000000111260941 -[UIViewAnimationState animationDidStop:finished:] + 78
    16  UIKit                               0x000000011ef6d4b7 -[UIViewAnimationStateAccessibility(SafeCategory) animationDidStop:finished:] + 48
    17  QuartzCore                          0x0000000110ac9134 _ZN2CA5Layer23run_animation_callbacksEPv + 310
    18  libdispatch.dylib                   0x000000011327772d _dispatch_client_callout + 8
    19  libdispatch.dylib                   0x00000001132673fc _dispatch_main_queue_callback_4CF + 354
    20  CoreFoundation                      0x00000001128ab289 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
    21  CoreFoundation                      0x00000001127f8854 __CFRunLoopRun + 1764
    22  CoreFoundation                      0x00000001127f7d83 CFRunLoopRunSpecific + 467
    23  GraphicsServices                    0x0000000114223f04 GSEventRunModal + 161
    24  UIKit                               0x000000011121be33 UIApplicationMain + 1010
    25  Playchat                            0x000000010fa89513 main + 115
    26  libdyld.dylib                       0x00000001134fa5c9 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

这是一个烦人的错误,也花费了我很多时间。我遇到了完全相同的问题,该应用程序在 iOS 8 中运行良好,但在 iOS 7.1 中崩溃了。问题是滚动视图的长宽比限制。尝试了很多不同的方法后,终于解决了这个问题:

崩溃似乎是浮点计算在某个时刻失败的结果。就我而言,我定义了 16:9 或更确切地说 9:16 的纵横比,相当于 0.5625。将乘数从 0.5625 更改为 0.5624 解决了该问题,此后再也没有出现过崩溃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 长宽比限制在 iOS 7 上被打破,在 iOS 8 上工作 的相关文章

随机推荐

  • 为什么 Visual Studio 找不到我的 DLL? [复制]

    这个问题在这里已经有答案了 在 Visual Studio 2010 中 在VC Directories gt Executable Directories 我已经指定了路径glew32d dll 但是 当我运行可执行文件时 它仍然抱怨 另
  • NodeJS Redis 客户端返回错误值

    我正在使用 NodeJS Redis 客户端 Redis节点 https github com mranney node redis并调用 SISMEMBER Redis 命令 但是 当我调用该命令时 无论该值是否是该集合的成员 它总是返回
  • Spring Boot REST API 的指标收集

    我正在尝试收集我的 Spring Boot 2 1 0 RELEASE 应用程序的指标 具体来说我想知道 调用各个 REST 端点的次数 每个端点处理请求所花费的时间 我的请求被处理 出错的平均速率 执行器 actuator metrics
  • 测量缠绕的绳子

    我正在尝试创建一个控件 它基本上允许我在彼此下面绘制不同的字符串 但是 字符串的宽度不能大于控件的宽度 为了解决这个问题 我正在考虑将 RectangleF 对象传递给 Graphics DrawString 方法 这将包装比传递的矩形宽度
  • array_walk_recursive 与数组?

    我有一个菜单数组 它是一个多维数组 我想对每个项目做一些事情 所以我尝试了 array walk recursive 这是菜单 menu array array name gt a url gt b array name gt c url
  • X 没有实现 Y(...方法有一个指针接收器)

    已经有几个关于此的问答 X 没有实现 Y 方法有一个指针接收器 的事情 但对我来说 他们似乎在谈论不同的事情 并不适用于我的具体情况 因此 我没有将问题变得非常具体 而是将其变得广泛和抽象 似乎有几种不同的情况可能会导致此错误发生 有人可以
  • 从 Chrome 打包应用程序读取和写入本地 sqlite 数据库

    是否可以从 chrome 打包应用程序读取和写入本地 sqlite 文件 我目前已经读取并写入了一个 json 文件 其中包含本地存储在硬盘上的应用程序数据 但我也希望能够使用 sqlite 数据库来执行此操作 我需要它在本地而不是在驱动器
  • 从概念上讲,重玩在游戏中是如何运作的?

    我有点好奇如何在游戏中实现重播 最初 我认为游戏中只会有一个包含每个玩家 人工智能操作的命令列表 然后它会 重新玩 游戏并让引擎照常渲染 然而 我查看了 FPS RTS 游戏的重播 经过仔细检查 甚至像粒子和图形 声音故障之类的东西都是一致
  • 如何编辑嵌入不和谐中的图像?

    是否可以更改嵌入内的图像 我正在尝试重新创建一个我在 Reddit 上看到的 蚀刻草图 机器人 并且想知道它是如何完成的 到目前为止 这是我尝试过的 这是在制作图像的函数内部 code that draws the etch a sketc
  • Next.js 路由器对某些页面上的浏览器后退按钮没有反应

    当浏览器的后退按钮打开时 我遇到了难以调查的错误https gart gallery 如果你去https gart gallery artworks 然后是任何艺术品 例如https gart gallery artworks my pla
  • 使用 jquery 创建会话?

    是否可以使用 jquery 或 javascript 创建会话变量 或者我是否必须使用 ajax 来调用执行此操作的 php 您需要使用服务器请求 Javascript仅在客户端运行 会话数据存储在服务器上 example of passi
  • 将 CSV 文件转换为 TF 记录

    我已经运行我的脚本超过 5 个小时了 我有 258 个 CSV 文件想要转换为 TF Records 我编写了以下脚本 正如我所说 我已经运行它超过 5 个小时了 import argparse import os import sys i
  • JAX-WS 返回复杂对象?

    我对 Java Web 服务还很陌生 但我在任何地方都找不到很好的解释 我在 NetBeans 中有 2 个 Java Web 项目 一种作为 Web 服务 另一种作为该 Web 服务的客户端 我还创建了自己的类 名为 Person 其中包
  • 如何将 updateview 与foreignkey/onetoonefield一起使用

    class ModTool models Model issue models OneToOneField Issue priority models CharField max length 1 choices PRIORITY blan
  • 使用 formControlName 作为反应式形式的自定义输入组件

    有一个自定义输入组件 它以带有验证的反应形式使用 Component moduleId module id toString selector custom select templateUrl custom select componen
  • 根据另一个文件中的顺序对一个文件中的行进行排序

    给定一个文件1 13 a b c d 5 f a c d 7 d c g a 14 a v s d 和一个文件2 7 x 5 c 14 a 13 i 我想考虑 file2 中第一列的相同顺序对 file1 进行排序 以便输出应为 7 d c
  • Matlab mex“缺少依赖共享库”

    我在 Matlab 2017a 中创建了几个 mex 文件 当我使用 Visual Studio C 2017 编译它们时 它们在我的计算机上运行良好 但是 当我尝试在另一台计算机上使用它们时 我收到一条错误消息 Error using m
  • 如何在 SQLAlchemy 中查询关联表?

    我正在尝试将 SQL 查询转换为 SQLAlchemy 查询 以供用户在 get API 内使用 问题是我无法从关联表中查询任何内容 我确信我不知道该方法 ORM roles users db Table roles users db Co
  • 如何从XLS(Excel)文件读取数据[Java,Android]

    我搜索过 stackoverflow 但没有找到明确的答案 如何将 XLS 文件的特定行和列的数据读取到我的 Android 应用程序 如何读取 XLS 文件 我不想将其转换为 CSV 因为当我尝试转换它们时出现错误 也许我可以用这个htt
  • iOS 长宽比限制在 iOS 7 上被打破,在 iOS 8 上工作

    在我的应用程序中 我设置了 UIView 的约束 其高度是使用宽高比约束从其宽度计算出来的 它在各种设备屏幕尺寸 3 5 4 4 7 5 5 的 iOS8 上完美运行 但它会导致应用程序在每个 iOS7 设备上崩溃 我认为这是纵横比约束 因