ios - UIActivityIndi​​catorView 仅在 Release模式下崩溃

标签 ios objective-c uiactivityindicatorview

我通过执行以下操作在导航栏中放置了 UIActivityIndi​​catorView。

在.h文件中

@property (strong, nonatomic) UIActivityIndicatorView *mySpinner;

在 .m 文件中

- (void)viewDidLoad
{
    [super viewDidLoad];

    _mySpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    _mySpinner.translatesAutoresizingMaskIntoConstraints = NO;
    _mySpinner.hidesWhenStopped = YES; 
    UIBarButtonItem *spinnerButton = [[UIBarButtonItem alloc] initWithCustomView:_mySpinner];
    self.navigationItem.rightBarButtonItem = spinnerButton;
    [_mySpinner startAnimating];

    //some other stuff
}

这对于 iOS 7 和 iOS 8 都很有效,这是我唯一的目标系统。该App前往Apple审核并通过,现已上架App Store。所以我从商店将它下载到我的一部手机(运行 iOS 8)上,然后将它下载到另一部运行 iOS 7 的手机上,当我使用 UIActivityIndi​​catorView 进入屏幕时它崩溃了。我重新启动 Xcode 并在 Release模式下运行该应用程序,并且能够使其再次崩溃。这就是消息。

Assertion failure in -[UINavigationBar layoutSublayersOfLayer:]

还有这个

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UINavigationBar's implementation of -layoutSubviews needs to call super.'

我尝试调用layoutSublayersOfLayer,但没有成功。我还尝试在 UIActivityIndi​​catorView 上使用自动布局,但这告诉我我还不能对此施加限制,因为 View 尚未准备好。

但是,如果我创建一个新项目并运行它,UIActivityIndi​​catorView 就会工作,就像我提交应用程序之前一样。我什至也在 Release模式下运行了测试。我已经删除了派生数据,清理,构建,重新启动,重新启动。但现在,在 iOS 7 中,如果我添加 UIActivityIndi​​catorView,应用程序总是会崩溃。有人对正在发生的事情有任何了解吗?我几乎删除了 viewDidLoad 方法中的所有内容,以查看是否是其他原因导致的,但无济于事。任何帮助,将不胜感激。现在我正在使用 if then 语句来检查 iOS 是 7 还是 8,如果是 8,我添加指示器,但我真的不想这样做。谢谢!!

我发现我的问题与 THIS 非常相似一个,但没有任何答案或评论。

最佳答案

如果您打算将 initWithCustomView:UIBarButtonItem 一起用于导航 Controller 栏按钮项,您应该允许它设置自己的约束(通过不设置 translatesAutoresizingMaskIntoConstraints = NO), 或者你必须自己布局。

在大多数情况下,自动布局可以在您要用作按钮的自定义 View 的 View 的 subview 上完成,然后您可以通过不设置 来允许包含的 View 根据需要展开translatesAutoresizingMaskIntoConstraints = NO.

关于ios - UIActivityIndi​​catorView 仅在 Release模式下崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28637174/

相关文章:

ios - 从 plist 中获取选定的图像以显示在另一个 View 中

iphone - 为异步 NSURLConnection 重构我的代码

iphone - UIActivityIndi​​catorView 无法在 iPhone 应用程序中停止

iphone - 使用 BJImageCropper 在 iOS 中裁剪图像

ios - 具有变量值的格式化 NSLocalizedString

ios - 将事件指示器设置为 CollectionViewCell

ios - 核心图 - 是否可以使用具有不同填充颜色的绘图符号的折线图

ios - 从 Firebase 存储中提取图像时,图像不会加载,直到我通过滚动与 tableView 交互... SWIFT 3

ios - 在 IOS 5 中,我们如何从我们的应用程序登录到 twitter?

ios - 在 Swift 中使用两个 Storyboard