如何通过按钮的点击事件更改方向?

时间:2010-01-23 20:22:13

标签: iphone

我已经使用了TableView,并且通过点击Disclosure Button也使用了Disclosure Button我有一个特殊的图像来了。我希望当我按下Disclosure Button时我必须通过执行Orientation得到那个特定的图像,所以我该怎么做。请帮我。我是这种应用的新手。

2 个答案:

答案 0 :(得分:2)

您需要手动转换表格。下面是一些代码,用于围绕其中心创建和旋转UITableView。

// this defines a constant PORTRAIT_FRAME, which is the frame of the iPhone screen 
// minus the Status Bar. Equivalent to CGRectMake(0,20,320,460). 
#define PORTRAIT_FRAME [[UIScreen mainScreen] applicationFrame]

// this defines a constant LANDSCAPE_FRAME, for orienting the table sideways
#define LANDSCAPE_FRAME CGRectMake(0,20,480,300)


// this function assumes you have a class variable called myTableView
// and it toggles the orientation of myTableView
- (void) rotateTable {

  if (myTableView.transform == CGAffineTransformMakeRotation(0)) {
    // rotate the image by 90 degrees  
    myTableView.transform = CGAffineTransformMakeRotation(M_PI/2); 
    myTableView.frame = LANDSCAPE_FRAME;
    return;
  }

  // set the image to its original orientation 
  myTableView.transform = CGAffineTransformMakeRotation(0); 
  myTableView.frame = PORTRAIT_FRAME;

}

如果要在按钮上单击触发此旋转,则声明UIButton并将此功能指定为操作。这是一个创建UIButton的函数。只需传递它@“rotateImage”为动作和自我为目标。

+ (UIButton*) getButtonAtPoint:(CGPoint)point 
                             target:(id)target 
                             action:(NSString*)action {

  UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
  [button addTarget:target 
             action:NSSelectorFromString(action)
   forControlEvents:UIControlEventTouchUpInside];
  return button;
}

答案 1 :(得分:0)

我认为您可能需要使用UIApplication的setStatusBarOrientation:animated:并手动旋转/调整顶级视图。如果您使用UIView的动画块方法,那么您应该只能在动画块中执行此操作并提交它以获得基本相同的效果。我自己没试过。