所以我的任务是将按钮添加到UIToolBar并将textView的inputAccessoryView设置为此UIToolBar。
所以我做了基础:
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"title1" style:UIBarButtonItemStylePlain target:self action:selector];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"longer title2" style:UIBarButtonItemStylePlain target:self action:selector];
UIBarButtonItem *item3 = [[UIBarButtonItem alloc] initWithTitle:@"title 3 is a lot longer" style:UIBarButtonItemStylePlain target:self action:selector];
UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *divider1 = [self barButtonDivider];
UIBarButtonItem *divider2 = [self barButtonDivider];
UIToolBar *toolBar = [UIToolBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
[toolBar setItems:@[spacer,item1,spacer,divider1,spacer,item2,spacer,divider2,spacer,item3,spacer];
self.textView.inputAccessoryView = toolbar;
因此有更多的方法。
1)我可以继承UIToolBar
2)我可以将UIView子类化并将视图设置为我需要的大小(superView的宽度和高度44),但是我需要在自动布局中完成所有这些,我尝试过但不能走吧。
有没有办法可以将上述方法与标准ToolBar一起使用,并获得正确的间距,无论我使用多少按钮都是相等的宽度?
ETA:,尝试了以下解决方案,但没有奏效:
- (UIBarButtonItem *)spacer {
return [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
}
[toolBar setItems:@[[self spacer], item1, [self spacer], divider1, [self spacer], item2, [self spacer], divider2, [self spacer], item3, [self spacer]];
已解决此解决方案,但我不喜欢它:
button.width = 150;
按钮在纵向或横向上保持相同,所以我想这是一个有效的解决方案你觉得怎么样?
答案 0 :(得分:1)
我不确定,但问题可能是重用spacer。每当您需要灵活的空间时,请尝试创建新的UIBarButtonSystemItemFlexibleSpace
。