xcode ipad横向-重新定位对象

xcode ipad横向-重新定位对象,xcode,ipad,orientation,landscape,Xcode,Ipad,Orientation,Landscape,试图让我的iPad应用程序以横向方向运行。我想在横向模式下更改一些控件的位置。我得到了日志,所以我知道我在方法中,但是,我的对象都不会移动。我错过什么了吗 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrient

试图让我的iPad应用程序以横向方向运行。我想在横向模式下更改一些控件的位置。我得到了日志,所以我知道我在方法中,但是,我的对象都不会移动。我错过什么了吗

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if(toInterfaceOrientation==UIInterfaceOrientationLandscapeRight ||
   toInterfaceOrientation==UIInterfaceOrientationLandscapeLeft)
    {
        NSLog(@"in landscape");
        // I would like to re-position my controls here but not working
        image1.frame = CGRectMake(318, 501, 100, 100);
        btnNext.frame = CGRectMake(200, 455, 100, 35)
    }
}

您的代码适用于iOS 5,但对于iOS 6及以上版本,请尝试使用方向掩码。这里有一个方法,您可以在其中实现对象的旋转

- (BOOL) shouldAutorotate
{
return YES;
 }

-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft   | UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}

你可以去掉你不需要的面具。在iOS 6中,通过输入此方法中所需的对象,您应该归档您正在尝试执行的操作。

尝试将重新定位代码移动到
视图WillLayoutSubview

如果你真的想一路走下去,只在iOS 6中使用约束。你的iOS 6代码将非常非常不同于你的iOS 5代码,这很烦人,但它也将更加优雅。在本书的讨论中,我深入讨论了根据旋转重新排列接口的问题:


我在讨论中提出的一个优雅的解决方案是首先使用约束设置接口,然后实现
updateViewConstraints
作为根据旋转调整这些约束的地方。接下来的讨论将展示如何使用
viewWillLayoutSubviews
在应用程序启动时设置初始界面;但是,正如它随后指出的,如果可以使用约束,那就更好了。

我用我的iPad模拟器5.0测试了这一点,它在这里工作。看起来这只是新iOS的一个问题。我怎么处理这个??使用故事板,因此我希望支持5.0及以上版本。建议?好的,太好了,这很有帮助!但我怎么知道我的应用程序是以哪个方向启动的呢?如果在横向视图中打开,视图将显示为纵向。如果要将应用程序的方向设置为一个方向,则有两种方法可以实现。一个是在信息页面上项目的目标级别,只需取消突出显示不需要的视图方向。二是通过你已经拥有的代码。在故事板中,您还可以将视图设置为横向或纵向。如果你想横向定位,那么做突出显示,并使用掩码代码,它会做到的。希望这有助于清理它。如果我能帮助你,请告诉我。