您的位置:首页 > 移动开发 > IOS开发

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

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

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

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

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

    [button setTitleColor:[UIColor
whiteColor] forState:UIControlStateNormal];

    button.titleLabel.font = [UIFont
systemFontOfSize:17];

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

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

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

    self.navigationController.navigationBar.translucent
= NO;

    UIBarButtonItem *space = [[UIBarButtonItem
alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil
action:nil];

    space.width = -20;

    

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

    self.navigationItem.leftBarButtonItems =
@[space, backButtonItem];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: