通过分类(Category)更改UINavigationItem位置,LeftBarButtonItem,RightBarButtonItem位置

本文介绍了如何通过自定义扩展UINavigationItem,结合全局变量iCurrentIsImageCame,来改变LeftBarButtonItem和RightBarButtonItem的位置,特别是在解决系统相册页面取消按钮位置问题时的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在AppDelegate设置一个全局属性,iCurrentIsImageCame默认设置为NO,用此方法更改位置会修改系统相册页面取消按钮位置,只需在进入此页面时讲iCurrentIsImageCame设置为YES,就可解决取消按钮位置问题。


@implementation UINavigationItem (MyItem)

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0

- (void)setLeftBarButtonItem:(UIBarButtonItem *)_leftBarButtonItem{

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

    AppDelegate* app = (AppDelegate*)[UIApplicationsharedApplication].delegate;

    

    if (app.iCurrentIsImageCame ==NO) {

        spaceButtonItem.width = -15;

    }

    

    if (_leftBarButtonItem){

        [selfsetLeftBarButtonItems:@[spaceButtonItem, _leftBarButtonItem]];

    }  else {

        [selfsetLeftBarButtonItems:@[spaceButtonItem]];

    }

}


- (void)setRightBarButtonItem:(UIBarButtonItem *)_rightBarButtonItem{

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

    

    AppDelegate* app = (AppDelegate*)[UIApplicationsharedApplication].delegate;

    if (app.iCurrentIsImageCame ==NO)

    {

        spaceButtonItem.width = -6;

    }

    

    if (_rightBarButtonItem) {

        [selfsetRightBarButtonItems:@[spaceButtonItem, _rightBarButtonItem]animated:NO];

        

    } else   {

        [selfsetRightBarButtonItems:@[spaceButtonItem]animated:NO];

        

    }

}

-(void)setRightBarButtonItems:(NSArray *)rightBarButtonItems

{

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

    

    AppDelegate* app = (AppDelegate*)[UIApplicationsharedApplication].delegate;

    if (app.iCurrentIsImageCame ==NO)

    {

        spaceButtonItem.width = -6;

    }

    

    if (rightBarButtonItems) {

        NSMutableArray * itemArr = [NSMutableArrayarrayWithArray:rightBarButtonItems];

        [itemArr insertObject:spaceButtonItematIndex:0];

        [selfsetRightBarButtonItems:itemArr animated:NO];

        

    } else   {

        [selfsetRightBarButtonItems:@[spaceButtonItem]animated:NO];

        

    }

}


#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值