У меня есть приложение, которое использует UIPickerView для установки различных параметров, связанных с стилем линии для серии графов (ширина линии, цвет и стиль линии). Этот сборщик используется в строке таблицы. Я определил кадр для сборщика так, чтобы его ширина заполняла ширину элемента contentView ячейки. До IOS 9 это работало. С iOS 9, по-видимому, существует какая-то максимальная максимальная ширина по ширине UIPickerView. Кто-нибудь сталкивался с чем-то похожим на это?UIPickerView Максимальная ширина в iOS 9
Вид подборщика создается так:
self.picker = [[[UIPickerView alloc] init] autorelease];
[self.contentView addSubview:self.picker];
self.picker.dataSource = self;
self.picker.delegate = self;
self.picker.backgroundColor = [UIColor grouped_table_view_background_colour];
Клетка уложены следующим образом:
-(void) layoutSubviews
{
// we need to allow the base class to perform its layout.
static CGFloat left_margin = 40;
static CGFloat right_margin = 40;
CGSize my_size;
[super layoutSubviews];
my_size = self.contentView.bounds.size;
my_size.width -= left_margin + right_margin;
// we now need to lay out the views.
CGRect picker_rect = CGRectMake(left_margin, 5, my_size.width, my_size.height);
self.picker.frame = picker_rect;
// we want to look at the bounds of the picker
CGRect picker_bounds = self.picker.bounds;
NSLog(@"picker bounds x=%g, y=%g, w=%g, h=%g", picker_bounds.origin.x, picker_bounds.origin.y, picker_bounds.size.width, picker_bounds.size.height);
}
Я также перегружать метод widthForComponent следующим образом:
-(CGFloat) pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
// we want to look at the bounds of the picker
CGRect picker_bounds = self.picker.bounds;
NSLog(@"picker bounds x=%g, y=%g, w=%g, h=%g", picker_bounds.origin.x, picker_bounds.origin.y, picker_bounds.size.width, picker_bounds.size.height);
return picker_bounds.size.width/3;
}
Я вижу, что границы представления отображаются правильно как в значениях, которые а также цвет фона в представлении. Несмотря на это, сборщик, кажется, заполняет менее половины ширины, доступной (688 очков на моем iPad)
Я до сих пор не знаю, что вызывает это, но ударил по обходному пути, используя три вида выбора, а не один вид сборщика с тремя компонентами. –