是否有可能使用包含UISlider的自定义视图获取UIBarButtonItem,以使用系统样式UIBarButtonSystemItemFlexibleSpace自动调整大小与UIBarButtonItem类似?
例如(为了简洁起见,我省略了设置框架并将工具栏作为子视图添加到现有视图中)
UISlider *slider = [UISlider new];
slider.minimumValue = 0;
slider.maximumValue = 1;
slider.value = 0.5
UIBarButtonItem *sliderItem = [[UIBarButtonItem alloc] initWithCustomView:slider];
UIBarButtonItem *exampleItem = [[UIBarButtonItem alloc] initWithTitle:@"Example" style:UIBarButtonItemStylePlain target:nil action:nil];
UIToolbar *toolbar = [UIToolbar new];
toolbar.items = @[sliderItem, exampleItem];
作为工具栏的想法是屏幕的整个宽度,exampleItem
由于其标题的本地化而可以是可变宽度,slideItem
与UIBarButtonSystemItemFlexibleSpace
类似地调整大小以占用工具栏中的剩余空间。
但是结果是滑块保持占用你给它的帧(或者如果省略的话是默认/最小帧),而下一个按钮就坐在它上面。
我通过更改滑块的自动调整大小掩码尝试了以下答案make a UIBarButtonItem with customView behave like Flexible-Space item中提到的方法,但似乎无效(问题是关于使用UITextField
而不是{ {1}}这可能是原因。)
我还尝试使用包含UISlider
作为自定义视图的其他UIView
拦截任何UISlider
次调用,但实际上它从未被我怀疑调用过。