iPhone 旋转后如何移动屏幕上的项目位置

发布于 2024-09-09 10:28:31 字数 517 浏览 1 评论 0原文

我有一个 UILabel,我需要在应用程序启动时向上移动大约 50 像素(因为它以纵向方式开始,我以横向方式设计它),然后每当它放回纵向时再次向上移动。现在我正在使用基于当前帧的CGRect。问题是,当我尝试旋转手机时,框架使用纵向值,并且标签偏离了方向。我尝试过使用其他几种方法,所有方法都基于 CGRect,虽然它们将标签保留在右轴上,但它却被移动到各处。在我这样做的同时,我也在改变字体的大小,所以我认为这可能会影响一些东西。

我使用的代码是:

//In ViewDidLoad
CGRect defBox = self.seperator.frame;

//On Rotation to Portriate
CGRect newBox = self.seperator.frame;
  newBox.origin.y += 50;
  self.seperator.frame = newBox;

//On Rotation to Landscape
self.seperator.frame = defBox;

I have a UILabel that I need to shift up by about 50 pixels on application start (because it starts out in portrait, and I designed it in landscape) and then once again whenever it is put back in portrait. Right now I'm using a CGRect based on its current frame. The problem is when I try to rotate the phone the frame uses the portrait values and it places the label way off. I've tried using a couple other methods, all based around CGRect, and while they kept the label on the right axis, it was shifted all over the place. At the same time I'm doing this, I'm also changing the size of the font, so I think that this might affect something.

The code I used is:

//In ViewDidLoad
CGRect defBox = self.seperator.frame;

//On Rotation to Portriate
CGRect newBox = self.seperator.frame;
  newBox.origin.y += 50;
  self.seperator.frame = newBox;

//On Rotation to Landscape
self.seperator.frame = defBox;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

断桥再见 2024-09-16 10:28:31

使用 self.separator.bounds,而不是 self.separator.frame 并在 willAnimateRotationToInterfaceOrientation:didRotateFromInterfaceOrientation: 中执行。

Use self.separator.bounds, not self.separator.frame and do it in willAnimateRotationToInterfaceOrientation: or didRotateFromInterfaceOrientation:.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文