UIActivityViewController,无法同时满足约束,在设备上时8.x的编译为iOS 7.x的
问题描述:
我有一个上的UIViewController
所示(名为viewCon这里)的UIActivityViewController
:UIActivityViewController,无法同时满足约束,在设备上时8.x的编译为iOS 7.x的
// items contains text and/or image
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypePostToWeibo, UIActivityTypeAssignToContact];
[viewCon presentViewController:activityViewController animated:YES completion:NULL];
我使用Xcode 6.1。我的应用的部署目标为7.0。我在两个物理iPhone(5S(8.0.2)和6(8.1))上运行它。
当我在物理设备(不是模拟器)上编译iOS 7.x的应用程序时,将显示UIActivityViewController
并且可以正常工作,但它会显示在所有屏幕上(高度过大),并且此日志消息将打印在输出:
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x1742941e0 UIView:0x174385960.bottom == _UIAlertControllerView:0x134ef4fc0.bottom>",
"<NSLayoutConstraint:0x174293d80 V:|-(0)-[UIView:0x170385960] (Names: '|':_UIAlertControllerView:0x134ef4fc0)>",
"<NSLayoutConstraint:0x17429a270 UIView:0x170385960.bottom <= _UIAlertControllerView:0x134ef4fc0.bottom>",
"<NSLayoutConstraint:0x174292cf0 UIView:0x174385960.centerY == UIView:0x170385960.centerY>",
"<NSLayoutConstraint:0x174294410 V:|-(>=8)-[UIView:0x174385960] (Names: '|':_UIAlertControllerView:0x134ef4fc0)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x17429a270 UIView:0x170385960.bottom <= _UIAlertControllerView:0x134ef4fc0.bottom>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
当我编译和运行的iOS 8.x一切正常。但我当然需要为iOS 7.x编译兼容性。 UIViewController
使用使用Autolayout的.xib。但我试图不使用Autolayout并出现同样的问题。我尝试了另外两个项目,也在iOS 7上,它仍然是一样的。
我也试图呈现activityViewController前添加以下代码,但同样的问题:
[activityViewController.view setTranslatesAutoresizingMaskIntoConstraints:NO];
我看着别人的开发人员有同样的问题(here),但它是由Xcode的6公测引起的。我有版本6.1。
答
我想这是一个iOS7的错误。 它带有一些特殊的sourceRect
值。 您可以通过集中的另一个sourceRect
解决这个问题,例如,你可以尝试:
[activityView popoverPresentationController].sourceRect=CGRectMake(0,200,768,20);
我有类似的问题,看起来像有没有为它的解决方案呢。如果您的项目最低允许版本为7.x,则您必须使用iOS 8.x SDK编译项目,并且所有项目都可以在iOS 7.x上正常工作。 – 2014-11-04 15:21:31
在8.x iPad上编译时发生这种情况。你知道那里是从哪里来的吗? – 2015-06-30 05:06:38