0

我自己正在学习Objective C,我正在尝试做这样的事情,但我想知道什么是最好和最正确的方法。我正在使用情节提要,但这没关系,因为这是为了我的学习,可以使用单独的 xib 来完成。只是解释一下,顶部的一堆按钮(无需滚动到侧面),当你触摸它们时,它会加载一个特定的视图,就好像它是一个气球一样。不像标签栏。

任何想法?

这里只是一个 PS,我不是要求准备好代码,只是关于如何实现它的想法。

谢谢

如下图:

试用

4

2 回答 2

1

您可以通过多种方式实现这一点,这里有一些建议:

  1. 使用UIViewController 包含,其中按钮栏是 的子视图,ContainerViewController每个按钮显示一个ContentViewController(带有相应箭头的白色视图)。

  2. 只需让按钮栏中的每个按钮显示一个UIView子类(带箭头的白色区域)。

  3. 让按钮栏中的每个按钮触发 UIPopoverController 的显示(白色区域,优点是箭头将被包含并免费定位)。

  4. 如果您确实需要横向滚动按钮栏中的按钮,您可以使用UICollectionView.

希望这可以帮助。

于 2013-09-19T21:21:17.050 回答
1

我会这样做,使用自定义Container Controllers

  1. 父 viewController 应该有来自 screenShoot 的所有视图
  2. childView 控制器应该有气球内的视图

您可以创建一个子视图控制器列表,每次单击一个圆圈时,您可以使用以下方法更改控制器:

- (void) displayContentController: (UIViewController*) content;
{
   [self addChildViewController:content];                 
   content.view.frame = [self frameForContentController];
   [self.view addSubview:self.currentClientView];
   [content didMoveToParentViewController:self];         
}

- (void) hideContentController: (UIViewController*) content
{
   [content willMoveToParentViewController:nil]; 
   [content.view removeFromSuperview];            
   [content removeFromParentViewController];      
}

使用向上箭头创建一个视图,并根据恢复单击的按钮的位置更改它的 center 属性。

-(void)didTouchButton:(UIButton*)target{
       [UIView animateWithDuration:0.5f animations:^ {
           CGRect frame = _upArrow.frame;
           frame.origin.x = target.origin.x;
           _upArrow.frame = frame;
       } completion:^(BOOL finished) {
          // here you can added your view controller
       }
 }
于 2013-09-19T21:22:00.163 回答