iOS關於自定義rightBarButtonItem


在常見iOS開發中,我們常遇到這樣的需求,如下:

我們需要自定義導航欄右側按鈕,常見的自定義包裝按鈕如下:

    //設置rightItem;

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

    btn.frame = CGRectMake(0, 0, 40, 30);

    btn.selected = NO;

    [btn setTitle:@"管理" forState:UIControlStateNormal];

    [btn setTitle:@"取消" forState:UIControlStateSelected];

    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

    [btn addTarget:self action:@selector(tap:) forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithCustomView:btn];

    [self.navigationItem setRightBarButtonItem:rightItem];

    但通過這個方法,我們往往是不能調整自定義出來的UIview距離屏幕邊界的方法,對於一些比價坑*的產品經理來說,這遠遠不能達不到他們那顆裝*的心,這個時候我們只能通過如下方法來調整整個個customView距離右邊邊界的值:

//設置rightBarBtnItem樣式:

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

    btn.frame = CGRectMake(0, 0, 100, 30);

    [btn setImage:[UIImage imageNamed:@"rightUp"] forState:UIControlStateNormal];

    [btn setTitle:@"推薦獎勵" forState:UIControlStateNormal];

    [btn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];

    btn.titleLabel.font = [UIFont systemFontOfSize: 15.0];

    btn.titleLabel.textAlignment = NSTextAlignmentRight;

    [btn setTitleEdgeInsets:UIEdgeInsetsMake(0, 10, 0, 0)];

    UIBarButtonItem *rewardItem = [[UIBarButtonItem alloc]initWithCustomView:btn];

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

    spaceItem.width = -15;

    [btn addTarget:self action:@selector(pushToReward) forControlEvents:UIControlEventTouchUpInside];

    self.navigationItem.rightBarButtonItems = @[spaceItem,rewardItem];

注意:這里着重強調的是給rightBarButtonItems弄成了一個數組,給它增加了一個spaceItem元素,用來控制customView距離右邊的間距,本身rightBarButtonItem中包裝的button距離它父控件,也就是rightBarButtonItem的值是5,當我們把width設置為-15后,相當於把整個rightBarButtonItem向右移動了10,對於特殊需求,可自行去調整.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM