Luc*_*uca 13 cocoa uipickerview
我需要实现一个UIPickerView选择小时,分钟和秒.我需要在拾取器旋转时保持固定的每个组件旁边都有一个标签.例如,您可以查看Apple Clock应用程序的计时器部分.我把图像作为参考

当然我需要一个带有3个组件的选择器,但问题是一样的.我找到了很多解决方案,将标签添加为子视图,并使用一些框架和手动调整来定位,但是无法使其与AutoLayout一起使用,而且我在网络上找不到解决方案.有人解决了这个问题吗?谢谢
我在我开发的应用程序中遇到了类似的问题,并决定采取以下措施:
我。创建 UIPicker
二. 找到所显示的选取器行的中点。
三. 将两个 UILabels 添加到屏幕和 in -(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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4982 次 |
| 最近记录: |