偏移是由于选择器指示器所在的单独的凸起平面造成的。这实际上是对这种现实生活视角(嵌套、印刷、透明的圆柱体)的相当准确的渲染。Apple 在时钟应用程序中所做的是右对齐选择器标签。这可确保数字与其单位标签之间的间距保持不变。你可以做同样的事情。
首先,在您的选择器视图委托中,您要实现-pickerView:attributedTitleForRow:forComponent:代替-pickerView:titleForRow:forComponent:。(看起来您已经在给定白色文本颜色的情况下完成了此操作。)您将使用NSParagraphStyle字符串属性。您需要在段落样式上设置两个属性:对齐和尾部缩进。对齐方式应设置为NSTextRightAlignment。尾部对齐将取决于您希望标签离组件右边缘多远。如果您有多个组件,则需要使用-pickerView:widthForComponent 设置组件的宽度:. 如果要将曲率保持在最小,请将组件宽度设置为尾缩进的大约两倍。
注意:如果您的选取器恰好有两个组件,则每个组件的宽度必须小于选取器宽度的 ⅓。
这是一个代码示例:
- (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setAlignment:NSTextAlignmentRight];
[paragraphStyle setTailIndent:150];
return [[NSAttributedString alloc] initWithString:@"42"
attributes:@{NSParagraphStyleAttributeName:paragraphStyle}];
}
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
return 300;
}