这些是UIToolBar图标和条形按钮图标的人机界面指南。
我想要一些不完全跟随HIG的东西。
基本上,我想要一个坚实的圆形和平坦的彩色UIButton,与文字顶部。(然而,出于明显的原因,我不希望文本与图像分开)。
这能做到吗?
你能用UIBarButtonItem = 5.0画一个.cornerradius吗?我相信那只是UIButton。
或者,您可以使用蒙面png图像作为您的UIBarButtonItem,应用一种淡色来更改图像掩码,并在顶部添加一些覆盖文本?
或者您需要伪造/模拟创建一个UIToolbar,只需在您的View底部创建一个44像素的lightGreyUIView
如何才能做到这一点,是否会因为违反HIG而被拒绝?
发布于 2015-05-15 06:21:44
您可以始终使用UIToolBar &将UIBarButtonItem添加到其中。由于UIBarButtonItem是从UIBarItem继承而来的&然后继承到NSObject,所以您需要修改的功能很少。
使用下面的代码在UIToolBar中启动您的项目,这样您就可以将自定义UIButton作为UIToolBarItem。
若要将按钮背景色更改为不同的状态,您可能必须将按钮状态保存在数组中,并根据状态更改颜色。
以下是这方面的新代码:
UIToolbar *toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0,55, self.view.bounds.size.width, 55)];
toolbar.tintColor = [UIColor redColor];
[self.view addSubview:toolbar];
NSMutableArray *tempArray = [[NSMutableArray alloc]init];
buttonStateArray = [[NSMutableArray alloc]init];
for(int i =0; i < 3; i++){
UIButton *tempButton = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];
tempButton.backgroundColor = [UIColor redColor];
tempButton.layer.cornerRadius = 8;
tempButton.layer.borderWidth = 2;
tempButton.tag = i;
tempButton.layer.borderColor = [UIColor blackColor].CGColor;
[tempButton setTitle:[NSString stringWithFormat:@"Hello %d", i] forState:UIControlStateNormal];
[tempButton addTarget:self action:@selector(displayTapped:) forControlEvents:UIControlEventTouchUpInside];
[tempArray addObject:[[UIBarButtonItem alloc]initWithCustomView:tempButton]];
[buttonStateArray addObject:[NSNumber numberWithBool:NO]];
}
[toolbar setItems:tempArray];现在是按钮的目标方法
-(void)displayTapped:(UIButton *)sender{
BOOL state = [[buttonStateArray objectAtIndex:sender.tag] boolValue];
[buttonStateArray replaceObjectAtIndex:sender.tag withObject:[NSNumber numberWithBool:!state]];
if(!state){
sender.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
}else {
sender.backgroundColor = [UIColor redColor];
}}
更新屏幕在这里

发布于 2015-05-15 05:01:24
您可以使用bar按钮的initWithCustomView:初始化。
https://stackoverflow.com/questions/30251793
复制相似问题