我想在UIToolBar
的项目之间添加一条细线,所以我正在创建一个带有自定义视图的UIBarButtonItem,如下所示:
UILabel *separatorLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 1, 44)];
separatorLabel.backgroundColor = [UIColor colorWithRGB:0xe5edec];
UIBarButtonItem *separator = [[UIBarButtonItem alloc] initWithCustomView:separatorLabel];
然后我将我的分隔符添加到items数组中:
[items addObjectsFromArray:[NSMutableArray arrayWithObjects:someButton1, separator, somebutton2, separator, someButton3, nil]];
我认为这会在我的工具栏中添加2个分隔符,但它只会在最后添加一个。这是为什么?
我可以通过创建2个重复标签和UIBarButtonItem来解决这个问题,但还有其他更好的方法吗?
答案 0 :(得分:0)
是的,您刚刚创建了一个UIBarButtonItem对象,因此显示了一个。 我认为更好的方法是使用自定义标签创建UIBarButtonItem子类,然后创建子类的两个对象。 我希望我的回答可以帮到你。
答案 1 :(得分:0)
UIView
的任何给定实例只能在视图层次结构中出现一次。如果您考虑UIView
上定义的API,这是相当明显的。例如,UIView
具有frame
属性,用于定义超级视图中的位置。如果查看出现在两个地方,frame
属性就没有意义。
所以你需要多个实例。您可以通过定义创建分隔符的方法来简化代码:
- (UILabel *)newSeparator
{
UILabel *separatorLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 1, 44)];
separatorLabel.backgroundColor = [UIColor colorWithRGB:0xe5edec];
UIBarButtonItem *separator = [[UIBarButtonItem alloc] initWithCustomView:separatorLabel];
return separator;
}
然后你可以像这样添加你的项目:
[items addObjectsFromArray:@[button1, [self newSeparator], button2, [self newSeparator]];
此外,如果您只显示背景颜色,则无需使用UILabel
。您可以使用UIView
。