2

我需要在运行时以编程方式更改 UIBarButton 的位置。

如果我使用

UIBarButtonItem *b = photoEditor.navigationItem.leftBarButtonItem;
CGRect frame = b.customView.frame;
frame.origin.x = frame.origin.x + 20;

立场不变

然后我想使用重新创建按钮...

UIBarButtonItem * btn = [[UIBarButtonItem alloc]
                         initWithTitle:title
                         style:UIBarButtonItemStyleBordered
                         target:target
                         action:selector];

但我无法访问操作信息。

要获得目标,b.target,但如果我想要 b.action?

4

3 回答 3

0

你可以

 UIBarButtonItem *item = self.navigationItem.leftBarButtonItem;

项目集宽度:56;

于 2013-10-25T14:17:24.123 回答
0

如果您的问题是如何获取操作选择器,Apple 文档中是否有正确的答案:UIBarButtonItem 参考

@property(nonatomic) SEL action
于 2013-10-25T13:35:43.390 回答
0

尝试此链接的解决方案Apply back action to uiButton,根据您的需要为按钮设置框架。

之后,当您想再次更改框架时,请使用以下代码

    UIBarButtonItem *item = self.navigationItem.leftBarButtonItem;
    UIView *view = [item valueForKey:@"view"];
    [view setFrame:CGRectMake(0, 0, 56, 31)]; // Frame as per your need.
     self.navigationItem.leftBarButtonItem = item;
于 2013-10-25T13:30:01.747 回答