我正在为导航栏按钮使用自定义图像。在 iOS 6 中,如果我们将左侧栏按钮项设置为按钮,其 x 值从 10px 开始。但是在 iOS 7 中,如果我们做同样的事情,按钮的 x 值从 20px 开始。有什么方法可以让它从 10px 开始,因为按钮的外观在 iOS 7 中不是很好?
问问题
11283 次
3 回答
1
UIBarButtonItems 可以使用 initWithCustomView: 方法进行初始化。因此,您可以创建一些自定义视图(在您的情况下,导航栏按钮项带有自定义图像)并使用该自定义视图初始化栏按钮项。例子:
CustomView *view = [[CustomView alloc] initWithImage:[UIImage imageNamed:@"back.png"]];
UIBarButtonItem *backBtn = [[UIBarButtonItem alloc] initWithCustomView:view];
你可以在 CustomView 的 initWithImage: 方法中设置任何你想要的框架:
- (id)initWithImage:(UIImage *)image {
self = [super initWithFrame:CGRectMake(0, 0, 50, 44)];
CGRect backArrowFrame;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
backArrowFrame = CGRectMake(-8, 12, 12.5, 20.5);
} else {
backArrowFrame = CGRectMake(-2, 12, 12.5, 20.5);
}
UIButton *imView = [[UIButton alloc] initWithFrame:backArrowFrame];
[imView setContentMode:UIViewContentModeScaleAspectFit];
[imView setBackgroundImage:image forState:UIControlStateNormal];
[imView addTarget:target action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:imView];
return self;
}
这样就可以改变 UIBarButtonItem 的框架。
于 2013-10-10T11:48:58.153 回答
0
不,你不能改变UIBarButtonItem
框架。相反,子类UINavigationBar
。
于 2013-10-10T10:09:24.773 回答
0
在 ios7 中添加按钮作为导航项,如下所示
UIButton *btnAdd = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60, 30)];
[btnAdd setContentMode:UIViewContentModeScaleAspectFit];
[btnAdd setBackgroundImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];
[btnAdd addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *btnAdd = [[UIBarButtonItem alloc] initWithCustomView:imView];
self.navigationItem.rightBarButtonItem = btnAdd;
于 2013-10-23T12:36:03.763 回答