0

我是 iPhone 应用程序开发的新手。我在导航栏中使用自定义的 uisegmentedcontrol。

此代码适用于 iPhone。

[self.navigationItem setHidesBackButton:YES animated:YES]; 
    profileSegmentControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects: @"seg1", @"seg2", @"seg3", @"seg4", nil]];


[profileSegmentControl addTarget:self action:@selector(seg1Button) forControlEvents:UIControlEventValueChanged];

**profileSegmentControl.frame = CGRectMake(40, 25, 310, 30);**
profileSegmentControl.segmentedControlStyle = UISegmentedControlStyleBar;
profileSegmentControl.momentary = YES;

//[profileSegmentControl sizeToFit];

UIBarButtonItem *profileSegmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:profileSegmentControl];
self.navigationItem.rightBarButtonItem = profileSegmentBarItem;

现在,当我将方向从纵向更改为横向时,如何更改 CGRectMake 中 uisegmentedcontroll 按钮的坐标?在横向时,宽度应为 510 而不是 310。

无法使用 [segmentControlObject sizeToFit],因为我隐藏了导航栏的“后退”导航按钮。我试过这个,但是segmentedControl的宽度并没有覆盖整个导航栏。

我知道 (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 方法,但是您不能在 viewDidLoad 或任何方法下调用它。

使用 xcode 4.6

4

1 回答 1

0
Do like this
if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait ){
      FACING = @"PU";
  }
  if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown ){
      FACING = @"PD";
  }
  if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft ){
      FACING = @"LL";
  }
  if( [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight ){
      FACING = @"LR";
  } 

因此,在相应的块中设置您想要的任何框架。它可以工作。

于 2013-08-07T09:16:38.177 回答