Мне нужно реализовать, UIPickerView
чтобы выбрать часы, минуты и секунды. Мне нужно иметь ярлык рядом с каждым компонентом, который остается фиксированным при вращении сборщика. Например, вы можете посмотреть раздел таймера в приложении Apple Clock. Ставлю изображение для справки
Конечно, мне нужен сборщик с 3-мя компонентами, но проблема та же. Я нашел много решений, чтобы добавить метку в качестве подпредставления и расположить ее с помощью некоторых фреймов и ручной настройки, но не могу заставить ее работать с AutoLayout, и я не нашел решения в Интернете. Кто-нибудь решил эту проблему? Спасибо
Я столкнулся с аналогичной проблемой в приложении, над которым работал, и решил следующее:
я. Создайте UIPicker
II. Найдите середину представленных строк Picker.
iii. Добавьте две метки UILabel на экран и (void)layoutSubview;
убедитесь, что метки всегда располагаются рядом с серединами.
В моем проекте мне нужна была только поддержка портретного режима, но она должна работать и в альбомной. Просто выберите достаточно широкую ширину строки, чтобы данные внутри средства выбора не перекрывались. Вот фрагмент кода для UIPicker:
#pragma mark - Picker View
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if(component == 0) {
return self.hourPickerData.count;
} else {
return self.minutePickerData.count;
}
}
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
return 40;
}
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component
{
return 30;
}
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
NSString *text;
if(component == 0) {
text = self.hourPickerData[row];
} else {
text = self.minutePickerData[row];
}
UILabel *label = (UILabel*)view;
if(view == nil) {
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 30)];
label.backgroundColor = [UIColor clearColor];
label.text = text;
label.textAlignment = NSTextAlignmentCenter;
label.textColor = LYTiT_HEADER_COLOR;
label.font = [UIFont fontWithName:LT_HELVETICA size:16];
}
return label;
}
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения