ios开发-下拉刷新一个莫名其妙的异常

ios开发-下拉刷新一个莫名其妙的错误

昨天在应用中加入下拉刷新功能的时候,莫名奇妙出现了这样一个错误。

ios开发-下拉刷新一个莫名其妙的异常

如图所示,

1.下拉刷新视图没有显示设置的背景色

2.文字说明不在*。

这下我费解了,我利用的是第三方类库EGORefreshTableHeaderView。  之前一直用的好好的,不过这次却突然出现这样的错误。百思不得其解阿。

折腾了好久,也没找到确切的原因。只能用一些巧法解决。

姑且先纪录下,没准以后能找到原因。当然,如果哪位大神看了我的博客,知道原因,跪求解答。


下面说下我的解决方法吧。

1.下拉刷新视图没有显示设置的背景色

在EGORefreshTableHeaderView.m文件中,有这样的语句。

- (id)initWithFrame:(CGRect)frame arrowImageName:(NSString *)arrow textColor:(UIColor *)textColor  {

    if((self = [super initWithFrame:frame])) {

self.autoresizingMask = UIViewAutoresizingFlexibleWidth;

self.backgroundColor = [UIColor colorWithRed:226.0/255.0 green:231.0/255.0 blue:237.0/255.0 alpha:1.0];

绿色底纹的为设置下拉刷新背景色的代码。

可是貌似没什么用,显示的还是默认的白色。后来我想到了一种可能,按理说,这样的设置方法没问题的,会不会是视图的位置放的不对?

就这种猜测,我试着打印了下frame的大小。

        NSLog(@"%f",self.bounds.size.height);


打印结果出乎我的意料,居然是0.0000f

这下闹糊涂了。在使用下拉刷新的位置,代码是这样的。

 if (_refreshHeaderView == nil) {

EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.testTableView.bounds.size.height, self.view.frame.size.width, self.testTableView.bounds.size.height)];

view.delegate = self;

        [self.testTableView addSubview:view];

_refreshHeaderView = view;

}

很显然,初始化的时候传进去了阿。那到底是为什么?我又试着打印了下self.testTableView.bounds.size.height。 结果也是0.

可能问题就出在这里吧。  不过..  能力有限,到现在还不知道到底错在哪。

于是乎,用取巧的办法,我在之前成功使用下拉刷新的位置,打印出了self.testTableView.bounds.size.height的大小。  结果是377.0000f。

然后我直接把这个定值传入,取代self.testTableView.bounds.size.height。

结果发现..真的没问题了。



2.文字说明不在*。

解决第一个问题后.. 我也不再多想了,应该还是我不知道的错误吧。
下面直接说下我的取巧方法。


UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, frame.size.height - 30.0f, self.frame.size.width, 20.0f)];

label.autoresizingMask = UIViewAutoresizingFlexibleWidth;

label.font = [UIFont systemFontOfSize:12.0f];

label.textColor = textColor;

label.shadowColor = [UIColor colorWithWhite:0.9f alpha:1.0f];

label.shadowOffset = CGSizeMake(0.0f, 1.0f);

label.backgroundColor = [UIColor clearColor];

label.textAlignment = NSTextAlignmentCenter;

[self addSubview:label];

_lastUpdatedLabel=label;

[label release];


这是对应的label代码。   其中初始化的时候,
UILabel *label = [[UILabel allocinitWithFrame:CGRectMake(0.0f, frame.size.height - 30.0fself.frame.size.width,20.0f)];
设置了x的坐标为0.0f。   现在是太靠右了。  于是我把x改为了-150.0f。让它靠左一点。修改后代码如下
UILabel *label = [[UILabel allocinitWithFrame:CGRectMake(-150.0f, frame.size.height - 30.0fself.frame.size.width,20.0f)];

结果证明..   这样是可以的。
看下改后的效果
ios开发-下拉刷新一个莫名其妙的异常

就这样,解决了我不知道是什么原因错误的两个问题。  先标记下, 希望以后有能力能找出问题。  也希望大神给我支支招。

下面说明个,那个文字说明部分,如果要修改。比如我把loading...改成了玩命刷新中。
可在

- (void)setState:(EGOPullRefreshState)aState

这函数中找到相应的替换就可以。