uipickerview(uipickerview 文字显示不全)

本篇文章给大家谈谈uipickerview,以及uipickerview 文字显示不全对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

有什么方法可以修改UIPickerView选中行的颜色

自定义UIPickerView的每一行label

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view;

选中某余洞一行

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;

取这一行的扒春Label,春毁耐改变颜色

- (UIView *)viewForRow:(NSInteger)row forComponent:(NSInteger)component;

如何自定义 UIPickerView 的行

在UIPickerViewDelegate中,声明了下面这样一个代理方法扮册绝:

- (UIView *)pickerView:(UIPickerView *)pickerView

viewForRow:(NSInteger)row

forComponent:(NSInteger)component

reusingView:(UIView *)view

我们通过这个方法就可以来自定义行的视图。时间不早,废话就不多说了,直接上代码吧:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

PickerViewCell *pickerCell = (PickerViewCell *)view;

if (!pickerCell) {

NSInteger column = 3;

pickerCell = [[PickerViewCell alloc] initWithFrame:(CGRect){CGPointZero, [UIScreen mainScreen].bounds.size.width, 45.0f} column:column];

}

[pickerCell setLabelTexts:@[...]];

return pickerCell;

}

我们定义了一个PickerViewCell视图,里面根据我们的传入的column参数来等分放置column个UILabel,并通过setLabelTexts来设置每个UILabel的文本。当然姿锋,我们也可以在PickerViewCell去定义UILabel的外观显示。就是这么厅姿简单。

不过,还有个需要注意的就是,虽然看上去是显示了3列,但实际上是按1列来处理的,所以下面的实现应该是返回1:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

return 1;

}

参考

UIPickerViewDelegate Protocol Reference

[img]

记一次 UIPickerView 无法滚动的问题。

开发的 App 有一个选择时间段的界面。

一开始用 UIDatePicker 发现无法满足 App 的需求。

且如果修改 UIDatePicker 的内部的子视图样式,上架 App 好像会被苹果拒绝。

于是就老老实实的用 UIPickerView 来做。

做出来的界面大概是这样。

一开始非常顺利,两个 UIPickerView 能正确的加载数据,也能显示在界面上。

但就是肆察无法滚动!!!为什么不能滚动?拆笑

很奇怪。我之前虽然没专用过 UIPickerView , 但写 demo 玩的时候,也写过几次。

从来就没有遇到不能滚动的情况。

两个 UIPickerView' 是被包裹在一个 UIView 中的。

一开始以为,是父视裂御茄图的约束问题,导致了 UIPickerView 其实是超出了父视图的范围,导致无法滚动。

但是通过检查之后,父视图的约束没有问题,两个 UIPickerView 也是在里面的。

难道是父视图的用户交互没有打开?

后来又是 谷歌、又是百度、又是 stackoverflow 的。

别人的提问都是在 UITableView 或者是 UIScrollView 中添加了 UIPickerView 导致无法滚动( 肯定是手势冲突了 )。

没有我的这种情况。

后来实在没办法,就在 dispatch_after 里重新 reload 了一下数据。

于是就是可以滚动了。

至于为什么,我也不知道。

有知道的小伙伴可以告诉我一下原因。

UIPickerView为什么会出现当前选中行和未选中行的错位?

宽度别设置太大,保证3列的宽度不要等于view的宽度。你看之间基逗滚都是有指庆空隙的搏余。把你第一个的宽度减去10,然后保证你view的宽度和delegate里面设置的宽度是一样的,不然就会错位

如何去掉UIPickerView及UIDatePickerView中的分割线

可以通过Reveal查看视图层级结构发现分割线为两个高为0.5的UIView,那么通过遍历subViews拿到并隐藏这两个view及可去掉分割线。下面分别介绍一下册败UIDatePickerView和UIPickerView的去除方法:

1、UIDatePickerView

为了方便复用可以创建一个UIDatePickerView的分类,代码如下:

#import "UIDatePicker+myPicker.h"

@implementation UIDatePicker (myPicker)

- (void)clearSpearatorLine

{

for (UIView subView1 in self.subviews)

{

if ([subView1 isKindOfClass:[UIPickerView class]])//野游取出UIPickerView

{

for(UIView subView2 in subView1.subviews)

{

if (subView2.frame.size.height 1)//取出分割线view

{

subView2.hidden = YES;//隐藏分割线

}

}

}

}

}

@end

2、UIPickerView

和UIDatePickerVIew不同的是UIPickerView的代理方法加载之前它的subViews为空,所以一开始的时候我们无法取到分割线。

经测试可以在下面的代理方法中获取到州脊颤

- (UIView )pickerView:(UIPickerView )pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView )view

{

PickerCell cell = [PickerCell cellWithRow:row];

[pickerView clearSpearatorLine];//UIPickerView分类方法

return cell;

}

关于uipickerview和uipickerview 文字显示不全的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表