正如标题所述,是否可以将省略号(...)放在UIPickerView“行”的开头而不是结尾?
我试过返回NSString和UIView:
pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
我甚至尝试使用滚动条包装视图以尝试找到我想要的替代解决方案,但似乎在开始时的省略号仍然是最适合我的。
文本的结尾是一个唯一的标识符,其中可以在各种对象之间重复开始,这就是文本结尾更重要的原因。
这不是我在做什么,但想到例如一个名单和人的社会安全号码,名称可能重复,ssn不会。
我知道我可以将号码放在开头,但是这个应用程序以这种方式运行各种平台,并且客户真的希望数字保持在最后以保持一致性。
这甚至可能吗?如果是这样,我怎么能这样做?
Thanx,Stefano。
添加了答案代码:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel *retval = (id)view;
if (!retval) {
retval= [[[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, [pickerView rowSizeForComponent:component].width, [pickerView rowSizeForComponent:component].height)] autorelease];
}
retval.text = [self.arrayWithData objectAtIndex:row];
retval.lineBreakMode = UILineBreakModeHeadTruncation;
retval.backgroundColor = [UIColor clearColor];
return retval;
}
答案 0 :(得分:3)
您可以通过在UIPickerViewDelegate上实现-pickerView:viewForRow:forComponent:reusingView:方法而不是-pickerView:titleForRow:forComponent:方法来实现。后者只是将一个字符串返回给UIPickerView,此时由选择器视图决定如何显示它。此时,您无法控制显示省略号的位置。
相反,实现-pickerView:viewForRow:forComponent:reusingView :,返回UILabel,并将其lineBreakMode设置为UILineBreakModeHeadTruncation。这将确保将椭圆放在字符串的开头。