【问题标题】:How can i add an uiscrollview on a navigation bar? [duplicate]如何在导航栏上添加 uiscrollview? [复制]
【发布时间】:2011-11-24 07:12:21
【问题描述】:

可能重复:
How can i add more than 10 buttons on a navigationbar in iphone application development?

我想在包含八个按钮的导航栏上设置一个 UIScrollView,当我按下下一个或上一个按钮时,该导航栏还包含 leftbaritem 和 rightbaritem,然后滚动视图必须使用此按钮滚动,因为某些按钮会出现滚动视图框架。

到目前为止,我已经制作了滚动视图和按钮,但问题是按钮现在正在显示。任何人都可以通过提供示例或发送源代码来帮助我。

提前致谢

编辑

topToolBar = [UIToolbar new];
[topToolBar sizeToFit];
topToolBar.frame = CGRectMake(0,0, 280, 50);
topToolBar.barStyle = UIBarStyleBlackTranslucent;

segmentedControllerView = [[UIView alloc] initWithFrame:CGRectMake(5, 0, 280, 50)];
segmentedControllerView.clipsToBounds = YES;

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
           action:@selector(aMethod:)
 forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(0,0, 60.0, segmentedControllerView.frame.size.height -10);
button.clipsToBounds = YES;
[segmentedControllerView addSubview:button];

UIButton *button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button2 addTarget:self 
           action:@selector(aMethod2:)
 forControlEvents:UIControlEventTouchDown];
[button2 setTitle:@"Show View2" forState:UIControlStateNormal];
button2.frame = CGRectMake(60,0, 60.0, segmentedControllerView.frame.size.height - 10);
[segmentedControllerView addSubview:button2];

UIButton *button3 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button3 addTarget:self 
           action:@selector(aMethod3:)
 forControlEvents:UIControlEventTouchDown];
[button3 setTitle:@"Show View" forState:UIControlStateNormal];
button3.frame = CGRectMake(120,0, 60.0, segmentedControllerView.frame.size.height -10 );
[segmentedControllerView addSubview:button3];

UIButton *button4 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button4 addTarget:self 
           action:@selector(aMethod4:)
 forControlEvents:UIControlEventTouchDown];
[button4 setTitle:@"Show View" forState:UIControlStateNormal];
button4.frame = CGRectMake(180,0, 60.0, segmentedControllerView.frame.size.height -10 );
[segmentedControllerView addSubview:button4];

[topToolBar addSubview:segmentedControllerView];
self.navigationItem.titleView = topToolBar;

我也接近结果,但问题是当我按下下一个或上一个按钮时,它会移动到下一个或上一个按钮上,但它应该在视图下移动....

这是动画代码:

   -(void)previousBarButtonAction{

[UIView beginAnimations: @"moveField"context: nil];
[UIView setAnimationDelegate: self];
[UIView setAnimationDuration: 0.5];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
segmentedControllerView.frame = CGRectMake(segmentedControllerView.frame.origin.x - 50,
                                   segmentedControllerView.frame.origin.y,
                                   segmentedControllerView.frame.size.width,
                                   segmentedControllerView.frame.size.height);
[UIView commitAnimations];


}
-(void)nextBarButtonAction{

[UIView beginAnimations: @"moveField"context: nil];
[UIView setAnimationDelegate: self];
[UIView setAnimationDuration: 0.5];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
segmentedControllerView.frame = CGRectMake(segmentedControllerView.frame.origin.x + 50,
                              segmentedControllerView.frame.origin.y,
                              segmentedControllerView.frame.size.width,
                              segmentedControllerView.frame.size.height);
[UIView commitAnimations];

}

【问题讨论】:

  • 这听起来像是对导航栏的可怕滥用。即使您设法通过了 Apple 的审核流程,我也强烈建议您不要这样做——它会混淆/惹恼您的用户。
  • 我已经编辑了我的问题,请立即帮助我。

标签: iphone ios uiscrollview uitabbarcontroller uinavigationbar


【解决方案1】:

我解决这个问题的方式略有不同......

viewDidLoad 中,我获取了scrollView 并调用了我的函数

menuScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,320,40)];
menuScrollView.showsHorizontalScrollIndicator = FALSE;
menuScrollView.showsVerticalScrollIndicator = FALSE;
menuScrollView.bounces = TRUE;


[self createMenuWithButtonSize:CGSizeMake(70.0, 30.0) withOffset:20.0f noOfButtons:7];

然后在我的function 中,我创建了我的菜单buttons,它看起来像navigation bar 上的按钮

-(void)createMenuWithButtonSize:(CGSize)buttonSize withOffset:(CGFloat)offset noOfButtons:(int)totalNoOfButtons{

NSLog(@"inserting into the function for menu bar button creation"); 
for (int i = 0; i < totalNoOfButtons; i++) {

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

    [button addTarget:self action:@selector(mybuttons:) forControlEvents:UIControlEventTouchUpInside];
    if(i==0){
    [button setTitle:[NSString stringWithFormat:@"Dashboard"] forState:UIControlStateNormal];//with title
    }
    else if(i==1){
        [button setTitle:[NSString stringWithFormat:@"Order"] forState:UIControlStateNormal];//with title
    }
    else if(i==2){
        [button setTitle:[NSString stringWithFormat:@"Product"] forState:UIControlStateNormal];//with title
    }
    else if(i==3){
        [button setTitle:[NSString stringWithFormat:@"Customers"] forState:UIControlStateNormal];//with title
    }
    else if(i==4){
        [button setTitle:[NSString stringWithFormat:@"Content"] forState:UIControlStateNormal];//with title
    }
    else if(i==5){
        [button setTitle:[NSString stringWithFormat:@"Site Analysis"] forState:UIControlStateNormal];//with title
    }
    else if(i==6){
        [button setTitle:[NSString stringWithFormat:@"Store Settings"] forState:UIControlStateNormal];//with title
    }
    else if(i==7){
        [button setTitle:[NSString stringWithFormat:@"CMS Settings"] forState:UIControlStateNormal];//with title
    }
    button.frame = CGRectMake(i*(offset+buttonSize.width), 8.0, buttonSize.width, buttonSize.height);
    button.clipsToBounds = YES;
    button.showsTouchWhenHighlighted=YES;
    button.layer.cornerRadius = 0;//half of the width
    //button.layer.borderColor=[UIColor clearColor];
    button.layer.backgroundColor=[UIColor blueColor].CGColor;
    button.titleLabel.font = [UIFont systemFontOfSize:10];
    button.layer.borderWidth=0.0f;
    button.tag=i;
    [menuScrollView addSubview:button];
}
menuScrollView.contentSize=CGSizeMake((buttonSize.width + offset) * totalNoOfButtons, buttonSize.height);
[self.view addSubview:menuScrollView];

}

它解决了...快乐编码... :))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2013-10-19
    • 2014-07-18
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多