代码之家  ›  专栏  ›  技术社区  ›  Ash

自定义视图旋转问题

  •  0
  • Ash  · 技术社区  · 14 年前

    我有一个UIView,我希望在视图旋转时改变它的大小和位置。但是,我需要能够以编程方式完成这项工作,而不是使用布局设置和自动调整大小。为此,我尝试在设备旋转时更改视图的框架和边界,并要求重新绘制,但无论使用何种变量组合,结果总是错误的。我实在搞不清楚是什么把代码搞砸了,而且这里的代码太多了。有人能给我一些提示或方法来实现这一点吗?我只是不知道还能去哪里找。

    这是我用于人像布局的代码,它可以工作:

    clusterMap.frame = CGRectMake(0, self.view.frame.size.height/2, 
            self.view.frame.size.width, 
            self.view.frame.size.height/2);
    clusterMap.bounds = CGRectMake(-clusterMap.frame.size.width/2, 
             -clusterMap.frame.size.height/2,
             clusterMap.frame.size.width,
             clusterMap.frame.size.height);
    [clusterMap setNeedsDisplay];
    

    但是,当我尝试使用这个代码的一个改编版本与不同的数字,它只是显示,好像屏幕是肖像。如果我把人物换过来,有的是肖像,有的是风景,各种奇怪的事情就会发生。我可以描述的一个例子是,图像可能以适当的比例绘制,但被剪裁到不正确比例的边界。我尝试了我能想到的每一种图形组合,系统地在成对的值之间一次交换一个宽度和高度,但这些组合都不起作用。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Vinzius    14 年前

    您需要使用他的控制器的WillAnimateRotationInterfaceOrientation来实现这一点。如你所说,你必须改变他的框架属性^^

    - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    }