Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在设备方向更改的UiView中居中UIActivityIndicator视图_Ios_Objective C - Fatal编程技术网

Ios 在设备方向更改的UiView中居中UIActivityIndicator视图

Ios 在设备方向更改的UiView中居中UIActivityIndicator视图,ios,objective-c,Ios,Objective C,我已经阅读了几乎所有与这个主题相关的内容,但实际上什么都不管用 当代码> SpulnCypult出现时, 我认为这应该是一件非常琐碎的事情 有什么帮助吗 谢谢 _spinnerContainer = [[UIView alloc] initWithFrame:self.rectForView]; _spinnerContainer.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.35]; _spinnerConta

我已经阅读了几乎所有与这个主题相关的内容,但实际上什么都不管用

当<>代码> SpulnCypult出现时, 我认为这应该是一件非常琐碎的事情

有什么帮助吗

谢谢

_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;
…表示“将微调器放在微调器容器的中心”。没有。事实上,这毫无意义,因为
\u spinnerContainer.center
是微调器容器的superview和superview坐标系中的某个位置,而
\u spinner.center
需要相对于其superview进行定位,即相对于微调器容器自身的内部坐标系(也称为其
边界

这样,尽管你说“当<代码> pSPIN容器出现时,ySpNe>/Cult>显示在中间,“实际上这或多或少是巧合。你的代码甚至没有正确地构建初始接口,所以旋转后它不起作用也就不足为奇了。”


在我个人看来,这里最简单的解决方案是扔掉代码,并使用自动布局约束来定位这些视图。自动布局的优点是,它准确地描述了在不考虑旋转的情况下应该发生的事情。

您似乎认为此代码:

_spinner.center = _spinnerContainer.center;
…表示“将微调器放在微调器容器的中心”没有。事实上,这毫无意义,因为
\u spinnerContainer.center
是微调器容器的superview和superview的坐标系中的某个位置,而
\u spinner.center
需要相对于其superview进行定位,即相对于微调器容器自身的内部坐标系茎(也称为其
界限

这样,尽管你说“当<代码> pSPIN容器出现时,ySpNe>/Cult>显示在中间,“实际上这或多或少是巧合。你的代码甚至没有正确地构建初始接口,所以旋转后它不起作用也就不足为奇了。” 在我个人看来,这里最简单的解决方案是扔掉代码,使用自动布局约束来定位这些视图。自动布局的优点是,它准确地描述了不考虑旋转的情况下应该发生的事情。

只需删除以下内容:

_spinnerContainer.autoresizesSubviews = NO;
只需删除以下内容:

_spinnerContainer.autoresizesSubviews = NO;

\u spinnerContainer
是如何进入界面的?如果没有更多的上下文,你的代码就没有意义。
\u spinnerContainer
是如何进入界面的?如果没有更多的上下文,你的代码就没有意义。非常感谢!你说的正是重点!我就像一只熊:2x2=5,我差点摔碎了头=)非常感谢你!你说到点子上了!我就像一只熊:2x2=5,我差点把我的头撞坏了=)谢谢@matt。你的解释真的很有趣——我不是iOS开发人员。决定从Dmitry的解决方案开始,它就像一个魅力=)太棒了!但仍然不应将视图的中心设置为其superview的中心;这似乎只有在非常罕见的情况下才起作用(你偶然发现了一个)。在我看来,学习自动布局和处理约束要简单得多,即使一开始似乎需要更多的代码。谢谢@matt。你的解释真的很有趣——我不是iOS开发人员。决定从Dmitry的解决方案开始,它就像一个魅力=)太棒了!但仍然不应将视图的中心设置为其superview的中心;这似乎只有在非常罕见的情况下才起作用(你偶然发现了一个)。在我看来,学习自动布局和处理约束要简单得多,即使一开始似乎需要更多的代码。