Activity 横向模式下指示器未居中

Activity indicator not centered in landscape mode

我正在尝试在我的 table 视图顶部添加一个 activity 指示器,使其在纵向和横向模式下都出现在屏幕中央。

activity 指示器放置在主视图的子视图内。 table 视图通过主视图中的视图容器包含。

当我单击 "Add Missing Constraints" 时,指示器获得中心 Y 对齐约束和水平 space (141) 约束。正如预期的那样,这在纵向模式下看起来很好,但在横向模式下,activity 指示器出现在左侧而不是水平居中。

我曾尝试将水平 space 约束更改为中心 X 对齐约束,但这似乎并没有使情况变得更好。

有什么建议吗?


这是特写:

看看你的constraints。似乎您需要在微调器视图上使用 center x alignment

编辑

为了避免一些令人困惑的约束问题,我建议您改为以编程方式放置微调器。您可以在加载时禁用 tableview,将 userInteractionEnabled 设置为 NO

// Set up your spinner
UIActivityIndicatorView * spinner = [[UIActivityIndicatorView alloc] init];
[spinner setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhiteLarge];
[spinner setHidesWhenStopped:YES];
[spinner setCenter:self.view.center];
[spinner startAnimating];
[self.view addSubview:spinner];

// disable your tableView
tableView.userInteractionEnabled = NO;

如果您想以编程方式执行此操作,则在您的控制器中 class:

self.activityIndicatorObject.center = self.view.center; 

已编辑:

也许你可以试试这个:

self.activityIndicatorObject.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2.0, [UIScreen mainScreen].bounds.size.height/2.0);

我已通过故事板添加 Activity 指标并分配

  • 置顶space到superview
  • 中心 x 对齐

它在屏幕中央显示纵向和横向模式的指示器。请试试这个。希望对你有效。谢谢

Your constraints are having problem, i have done the same thing in sample,
please take a look and try to set constraints accordingly, 
it would fix the problem. I have attached a snapshot for constraints.

代码中没有其他问题,只有约束问题。祝你好运。

--> 首先,添加 Spinner View(屏幕截图中的黄色)

Select 它并设置约束,如

将其固定到所有四个边

--> 其次添加 Activity 指标。

Select 它并设置约束,如

中心 X 和中心 Y = 0


如果有任何关于错位视图的警告,select“解决自动布局问题”!

最终约束是这样的

@Stine 不知道你有没有得到答案。但是在情节提要中尝试以下操作。就我而言,它是有效的。

在故事板中设置 activity 指示器视图的垂直和水平对齐方式。而在那个设置之后,宽高约束在Add New Constraints.

之后

这是纵向和横向模式的最终结果

肖像:

横向:

SWIFT 3.2

试试这个

self.activityIndicator.center = CGPoint(x:self.view.bounds.size.width/2.0,y: self.view.bounds.size.height/2.0);

activityIndicator.autoresizingMask = (UIViewAutoresizing(rawValue: UIViewAutoresizing.RawValue(UInt8(UIViewAutoresizing.flexibleRightMargin.rawValue) | UInt8(UIViewAutoresizing.flexibleLeftMargin.rawValue) | UInt8(UIViewAutoresizing.flexibleBottomMargin.rawValue) | UInt8(UIViewAutoresizing.flexibleTopMargin.rawValue))))