在可可触摸中以编程方式将视图位置设置为右上角

Posted

技术标签:

【中文标题】在可可触摸中以编程方式将视图位置设置为右上角【英文标题】:Set view position to top right programmatically in cocoa touch 【发布时间】:2011-12-14 15:44:44 【问题描述】:

我需要确保一个视图 A(大小:200x200)始终与第二个视图 B(全屏大小)内的右上角对齐。我想确保无论设备方向如何,视图 A 都留在那个地方。事实是,在使用界面构建器定位视图时,我对此没有任何问题,但我需要以编程方式构建它。我想我应该使用一些自动调整大小设置,你能告诉我哪个应该将视图对齐到其父视图的右上角吗?

【问题讨论】:

你检查过 UIView 的 autoResizing 属性了吗?developer.apple.com/library/ios/#documentation/uikit/reference/…developer.apple.com/library/ios/#documentation/uikit/reference/… autoresizingMask 是我描述的行为所需的唯一属性吗?我尝试了不同的 autoresizingMask 属性值,但无济于事...... 您必须首先将视图定位在正确的位置,然后旋转过程中的重新定向由调整大小掩码自动完成。 “右上角”是什么位置。顶部和底部同时是什么意思? 我的错,是“右上角”。 【参考方案1】:
UIView parentView  //your full screen view
UIView view //the 200x200 view

[parentView addSubview:view];
CGRect frame = view.frame;

//align on top right
CGFloat xPosition = CGRectGetWidth(parentView.frame) - CGRectGetWidth(frame);
frame.origin = CGPointMake(ceil(xPosition), 0.0);
view.frame = frame;

//autoresizing so it stays at top right (flexible left and flexible bottom margin)
view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin

这会将视图定位在右上角并设置自动调整大小的蒙版,使其保持在该位置。

【讨论】:

谢谢,这对我很有用。只是对上面最后一行的修改,应该是“view.autoresizingMask = ...”。

以上是关于在可可触摸中以编程方式将视图位置设置为右上角的主要内容,如果未能解决你的问题,请参考以下文章

在 FusedLocationProviderClient 中以编程方式设置模拟位置

如何在UWP中以编程方式在设置中打开位置服务?

我在可可触摸应用程序中的按钮没有正确返回我的位置

在 Android 中以编程方式打开位置提供程序

使用触摸事件移动视图

在视图中以编程方式添加图像