【问题标题】:UIActivityIndicatorView MisalignedUIActivityIndi​​catorView 未对齐
【发布时间】:2012-01-09 23:02:32
【问题描述】:

UIActivityIndicatorView 在 XIB 中水平居中。

在 iOS 4(模拟器)中,指示器默认为大白(iOS 5 中引入的颜色属性),这很好。奇怪的是它也被偏移了。

我最初的假设是 XIB 出了点问题(或类似的东西)。但是,在 iOS 5(模拟器,iPhone 4)中,它可以完美运行。

看到关于UIActivityIndicatorViews 从 iOS 4 到 iOS 5 的唯一变化是添加了 color 属性,我很难过。我知道这里可能没有足够的信息来推断确切的问题。我更关心从哪里开始调试,欢迎任何关于我可以提供哪些进一步信息的建议。

更多信息:

  • iPad 将指示器加载到可靠的位置,仅在 iOS 4 和 iOS 5 之间改变颜色。
  • 我有两个静态原点 (portPoint = (x, y); landPoint = (w, z);),我手动设置了旋转。当应用程序加载时,指标的原点是(正确的)portPoint(我已经通过 NSLog 验证),尽管在视觉上没有对齐。当我旋转到横向时,原点正确(视觉和数据)设置为landPoint。当我向后旋转时,原点(视觉和数据方面)正确设置为portPoint,从而解决了问题。

【问题讨论】:

  • 进行干净的构建并重试。可能从模拟器中删除应用程序。检查您的自动调整蒙版。
  • 清理/清理构建文件夹。重置sim上的所有内容。 AutoresizingMask = UIViewAutoresizingNone。还是不行:(
  • 你能上传一个最小可行的项目吗?我看到你有一个可以托管它的 Github。
  • 自动调整无?所有边距都应该灵活!

标签: iphone cocoa-touch position xib uiactivityindicatorview


【解决方案1】:

您是对的,没有看到您的代码,我无法判断是否还有其他事情发生,但在超级视图中将视图居中并在设备旋转时保持这一点相当简单。试试这个:

  1. 确保UIActivityIndicatorViewautoResizingMask 设置为UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin

  2. 在 XIB 文件或 viewDidLoad

  3. 中将活动指示器定位在其超级视图的中心
  4. 不要在旋转时改变活动指示器的框架,它应该自动居中

如果上述方法无法解决问题,请发布一些代码以及相关视图的 autoResizingMaskcontentMode 值。

【讨论】:

  • 所以,这不是 100% 我的问题。缺少的一个部分是,无论出于何种原因,在 iOS 4.3 中,启动时出现了一些错误的旋转,导致在 autoResizing 和我明确放置的 activityIndi​​catorView 之间发生分裂。
  • 这个答案非常好,特别是因为它被指出一旦设置了 autoResizingMask 就不会改变 UIActivityIndi​​cator 的框架。一旦我注释掉了在方向更改期间更改框架的代码,它就起作用了!谢谢,
【解决方案2】:

想法:

1/ 您的视图(活动指示器超级视图)大于您的显示(错误的自动调整大小掩码?xib plist 中的错误值?)或者它在其超级视图中的位置错误。

2/ 未正确设置自动调整大小的蒙版。对于活动指示器,它应该是

(UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)

要对此进行调试,请尝试将日志记录放入 viewDidAppear。获取活动指示器的中心(CGPoint)并使用 UIView 方法将其转换为您的顶视图坐标(例如 [UIView convertPoint:fromView:])。此位置应与您在屏幕上看到的位置相同。

如果不是,则存在更大的问题,可能与动画状态有关。 否则,您应该能够找到将您的活动指示器转换为这个奇怪位置的视图。记录层次结构中所有视图的框架。

检查您是否在正确的位置记录了信息,并且在记录后您没有更改视图位置。

【讨论】:

    【解决方案3】:

    它看起来确实像设备处于横向位置一样。当视图大小或方向发生变化时,检查您是否正确地重新定位它。

    【讨论】:

    • 查看我关于轮换的更新?有一个奇怪的现象可能是相关的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多