如何在 iPad 的导航栏中调整自定义 UISegmentedControl 的大小?

Posted

技术标签:

【中文标题】如何在 iPad 的导航栏中调整自定义 UISegmentedControl 的大小?【英文标题】:How to resize custom UISegmentedControl inside navigation bar for iPad? 【发布时间】:2013-08-07 09:09:32 【问题描述】:

我是 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

【问题讨论】:

【参考方案1】:
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";
   

所以在相应的块中设置任何你想要的框架。它可以工作。

【讨论】:

user2582825 :非常感谢您的帮助,它现在在 iphone 上工作正常.. 现在我想在 iPad 上实现同样的东西,它应该只在一个 .ipa 文件中.. 请指导 在这种情况下,您将不得不像这样检查 if (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) else 并将您在 iPhone 代码中使用的所有上述四个 if 条件放入每个 if 和否则阻止。它也适用于 iPad ..

以上是关于如何在 iPad 的导航栏中调整自定义 UISegmentedControl 的大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何在导航栏中添加自定义视图?

如何从自定义导航栏中删除这条黑线

单击导航栏中的“返回”按钮时如何设置自定义视图控制器?

如何动态调整导航栏中的标题大小

在导航栏中自定义 UIBarButtonItem

如何在 ipad 设备上调整导航栏高度