ios - 在设备方向更改时在 UiView 中居中 UIActivityIndi​​catorView

标签 ios objective-c

我已经阅读了与该主题相关的几乎所有内容,但几乎没有任何效果。

_spinnerContainer 出现时,_spinner 显示在它的中间,但是当设备旋转时,_spinnerContainer 按预期旋转并且 _spinner 卡住在旧 _spinnerContainer 的位置中间。

我相信这应该是非常微不足道的事情。

有什么帮助吗?

谢谢!

_spinnerContainer = [[UIView alloc] initWithFrame:self.rectForView];
_spinnerContainer.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.35];
_spinnerContainer.autoresizesSubviews = NO;
_spinnerContainer.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_spinnerContainer.clearsContextBeforeDrawing = YES;
_spinnerContainer.clipsToBounds = NO;
_spinnerContainer.contentMode = UIViewContentModeCenter;

_spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
_spinner.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
_spinner.center = _spinnerContainer.center;
[_spinner startAnimating];
[_spinnerContainer addSubview:_spinner];

最佳答案

你似乎认为这段代码:

_spinner.center = _spinnerContainer.center;

...表示“将微调器放在微调器容器的中心”。它没有。事实上,这没有任何意义,因为 _spinnerContainer.center 是微调器容器的 superview 中的某个位置,并且在 superview 的坐标系中 — 而 _spinner.center 需要相对于 its superview 定位,即相对于 spinner 容器自己的 internal 坐标系(也称为其 bounds ).

所以,虽然你说“当_spinnerContainer出现时,_spinner显示在它的中间”,其实这或多或少的巧合。您的代码甚至没有正确构造初始 接口(interface),因此它在轮换后不起作用也就不足为奇了。

在我个人看来,这里最简单的解决方案是丢弃代码并使用自动布局约束来定位这些 View 。自动布局的优势在于,无论旋转如何,它都能准确描述应该发生的情况。

关于ios - 在设备方向更改时在 UiView 中居中 UIActivityIndi​​catorView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34922690/

相关文章:

ios - 通用链接不会在 iOS 上打开应用程序

ios - UISearchController - Objective C 到 Swift 问题

ios - 使用 IP 地址连接到服务器时应用程序传输安全策略错误

iphone - objective-c : Write a function to return the position of the last character in a UILabel?

objective-c - 当 NSTokenField 成为第一响应者时,如何执行操作(显示弹出窗口)?

android - 在flutter中刷新 token

ios - React Native 中的下划线占位符

ios - NSPredicate 与 NSString 发生奇怪的崩溃

ios - Xcode Today Extension 卡在 "Failed to inherit CoreMedia permissions"错误

ios - 为整个应用更改 UITableViewCell 的背景 View