【问题标题】:iOS Cocoa UITableView position after rotate旋转后的iOS Cocoa UITableView位置
【发布时间】:2014-08-11 19:38:33
【问题描述】:

我可以使用此代码将 UITableView 放置在我想要的任何位置:

CGRect newFrame = self.aTableView.frame;
newFrame.size.height = 300.0;
newFrame.size.width = 300.0;
newFrame.origin.y = 400;
newFrame.origin.x = 400;
self.aTableView.frame = newFrame;

上面的代码工作正常。但是当我使用以下代码旋转表格视图时,它总是定位在 (0,0) 处,换句话说,就是屏幕的左上角:

CGPoint oldCenter=self.aTableView.center;
self.aTableView.transform=CGAffineTransformMakeRotation(-M_PI_2);
self.aTableView.center=oldCenter;

旋转后如何定位表格?

非常感谢您提供的任何见解。

【问题讨论】:

  • 注意:'CGPoint oldCenter=self.aTableView.center;'和'self.aTableView.center=oldCenter;'可以删除行,结果不会改变。表格仍然位于屏幕的左上角。
  • 手柄方向。设置正确的 AutoLayout 约束

标签: ios objective-c xcode cocoa-touch uitableview


【解决方案1】:

问题是由于没有正确检测 iPhone 的旋转而引起的。换句话说:
• 旋转表格的代码很好
• 仅仅旋转桌子并不会使其消失

问题是我没有正确检测到 iPhone 的旋转。我将简单地分享适用于 XCode 5 / iOS 7 的方法,而不是详细说明我使用的错误方法。

以下是有效的方法:

- (NSUInteger)supportedInterfaceOrientations
     {
    return UIInterfaceOrientationMaskAll;
}

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)  interfaceOrientation duration:(NSTimeInterval)duration
{
    //This is where I now place the code to rotate the table
    //I test interfaceOrientation to see the current orientation
    NSLog(@"%d", interfaceOrientation);
}

通过使用这种检测手机旋转的方法,我的代码每次都可以改变UITableView的框架。

主要基于:
frame doesnt changes while orientation in ipad

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多