iOS开发问题----自定义导航栏点击范围扩展

来源:互联网 发布:跨语言大数据平台译见 编辑:程序博客网 时间:2024/06/01 08:58

    在iOS开发中往往需要自定义导航栏的返回按钮,而一般采取的策略一般都是,先创建一个按钮,附上想要贴上的图片,然后设置大小,在添加点击事件,然后在创建一个UIBarButtonItem 将item设置成自定义位图模式,将先前创建的按钮赋值进去,这样一个自定义的按钮就贴上去了,有的时候还会根据图片的样式适度的调整图片在按钮里面的布局。但是有的时候需求需要我们将这个按钮的可点击范围放大,如果说向右侧扩大,这个问题不大,但是向左侧,就有问题,因为替换原先系统的返回按钮之后,他的位置就已经定了。无论做出怎样的调整,是变化frame大小也好,改变布局方式也罢,返回按钮的左侧都已经定死,难动分毫。那么可以采取如下策略,将左侧位置用UIBarButtonItem以适应填充的方式填充。


 UIButton *button = [[UIButtonalloc] initWithFrame:CGRectMake(0,0, 80,44)];

    [button setImage:[UIImageimageNamed:@"arrow_left"forState:UIControlStateNormal]; //设置自定义返回图片

    [button setTitle:@""forState:UIControlStateNormal];

    [button setTitleColor:[UIColorwhiteColor] forState:UIControlStateNormal];

    button.titleLabel.font = [UIFontsystemFontOfSize:17];

    [button setImageEdgeInsets:UIEdgeInsetsMake(0, -32, 0, 0)];  //调整按钮内图片的布局 

    [button setTitleEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 0)];

    [button addTarget:selfaction:@selector(backView)forControlEvents:UIControlEventTouchUpInside];

    self.navigationController.navigationBar.translucent = NO;


    UIBarButtonItem *space = [[UIBarButtonItemalloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpacetarget:nilaction:nil];

    space.width = -20;

    

    UIBarButtonItem *backButtonItem = [[UIBarButtonItemalloc] initWithCustomView:button];

    self.navigationItem.leftBarButtonItems =@[space, backButtonItem];


0 0
原创粉丝点击