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

来源:互联网 发布:国外期刊 数据库 编辑:程序博客网 时间:2024/06/14 01:00

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

如图所示,

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

2.文字说明不在中央。

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

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

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


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

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

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

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

   if((self = [superinitWithFrame:frame])) {

self.autoresizingMask =UIViewAutoresizingFlexibleWidth;

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

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

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

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

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


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

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

 if (_refreshHeaderView ==nil) {

EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderViewalloc] 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.testTableViewaddSubview:view];

_refreshHeaderView = view;

}

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

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

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

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

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



2.文字说明不在中央。

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


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

label.autoresizingMask =UIViewAutoresizingFlexibleWidth;

label.font = [UIFontsystemFontOfSize:12.0f];

label.textColor = textColor;

label.shadowColor = [UIColorcolorWithWhite:0.9falpha:1.0f];

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

label.backgroundColor = [UIColorclearColor];

label.textAlignment =NSTextAlignmentCenter;

[selfaddSubview:label];

_lastUpdatedLabel=label;

[labelrelease];


这是对应的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)];

结果证明..   这样是可以的。
看下改后的效果


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

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

- (void)setState:(EGOPullRefreshState)aState

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

原创粉丝点击