旋转后的iOS Cocoa UITableView位置

时间:2014-06-21 01:48:07

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

我可以使用此代码在任何我想要的位置定位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;

旋转后如何定位桌子?

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

1 个答案:

答案 0 :(得分: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