我通过执行以下操作在导航栏中放置了UIActivityIndicatorView。
<。>文件中的
@property (strong, nonatomic) UIActivityIndicatorView *mySpinner;
<。>文件中的
- (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,这是我定位的唯一两个系统。该应用程序前往Apple审核,通过,现在在App Store上。因此,我将其下载到我的一部手机(运行iOS 8),它可以在商店运行,下载到另一部运行iOS 7的手机,当我使用UIActivityIndicatorView进入屏幕时它会崩溃。我启动Xcode并在发布模式下运行App,并且能够再次崩溃。这是消息。
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,但这不起作用。我还尝试在UIActivityIndicatorView上使用自动布局,但这告诉我,我还不能对此进行约束,因为视图尚未就绪。
但是,如果我创建一个新项目并运行它,UIActivityIndicatorView就像我提交应用程序之前一样。我甚至也在发布模式下运行测试。我删除了派生数据,清理,构建,重启,重启。但是现在,在iOS 7中,如果添加UIActivityIndicatorView,应用程序将始终崩溃。有没有人对正在发生的事情有任何见解?我几乎从viewDidLoad方法中删除了所有内容,看看是否是导致它的其他东西,但无济于事。任何帮助,将不胜感激。现在我正在使用if then语句检查iOS是7还是8,如果8我添加指标,但我真的不想这样做。谢谢!
我发现我的问题与THIS非常相似,但没有任何答案或评论。
答案 0 :(得分:1)
如果您要将initWithCustomView:
与UIBarButtonItem
一起用于导航控制器栏按钮项,则应允许其设置自己的约束(通过NOT设置{{ 1}}),或者你必须自己解决。
在大多数情况下,可以在您要用作按钮的自定义视图的视图的子视图上执行自动布局,然后您可以根据需要通过不设置{来允许包含视图展开{1}}。