如何锚定相对于屏幕 iPhone 一侧的视图

Posted

技术标签:

【中文标题】如何锚定相对于屏幕 iPhone 一侧的视图【英文标题】:How to anchor a view relative to the side of the screen iPhone 【发布时间】:2012-11-08 15:42:38 【问题描述】:

我正在创建一个直接在代码中创建布局的 ios 应用。我习惯使用 xib,但这不是这个项目的选择。我不知道如何定位固定在屏幕底部/侧面的元素。我正在寻找的解决方案会将其放置在纵向底部,但在旋转时会将其固定到右侧(非常类似于底部栏在相机应用程序中的工作方式)。它在纵向屏幕底部正确,问题在于旋转

我也在为 iOS 5 构建,所以我需要一个不使用自动布局的解决方案。

这是到目前为止我在旋转到横向时所做的代码。这个想法是我旋转 90 度(正在工作),然后使用某种遮罩将其锚定到左侧。我在哪里错了?甚至可以锚定这样的对象吗??

myView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleLeftMargin;


CGAffineTransform rotate90 = CGAffineTransformMakeRotation(degreesToRadians(-90));

myView.transform = rotate90;

【问题讨论】:

【参考方案1】:

不要与酒吧打交道,而要与酒吧内的景色打交道。

试试这个:

1) 使用以下方法防止您的应用自动旋转:

//For iOS 5 and lower
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
    return NO;


//For iOS 6 and upper
- (BOOL)shouldAutorotate 
    return NO;

2) 旋转你的栏内的视图,而不是你的栏本身

希望对你有所帮助。

【讨论】:

谢谢,有道理。还有一些我没有提到的其他观点必须被翻转,但希望这很容易。此外,看起来苹果想要“返回 UIDeviceOrientationIsPortrait(toInterfaceOrientation);”而不仅仅是NO【参考方案2】:

您需要使用NSLayoutConstraints 来执行此操作。

我对约束编码了解不多,请参考NSLayoutConstraint获取更多参考。

WWDC 2012 Session Videos about NSLayoutConstraints

【讨论】:

这显然是一个理想的解决方案,只不过它依赖于iOS 6及更高版本 @Jameo:感谢您的评论。对不起,我帮不了你更多:)

以上是关于如何锚定相对于屏幕 iPhone 一侧的视图的主要内容,如果未能解决你的问题,请参考以下文章

如何锚定 UIScrollView 的子视图,如移动 Safari 中的 URL 栏?

iPhone 词典应用中的模型-视图-控制器实践

你如何自动布局约束按钮内的通知标签?

如何在弹出视图中获取文本字段相对于 ipad 屏幕的位置

如何将 UIView 锚定到屏幕上的特定位置并在滚动时将其保留在那里

如何知道单击项目在列表视图中相对于android中的屏幕的y位置