昨天在应用中加入下拉刷新功能的时候,莫名奇妙出现了这样一个错误。
如图所示,
1.下拉刷新视图没有显示设置的背景色
2.文字说明不在中央。
这下我费解了,我利用的是第三方类库EGORefreshTableHeaderView。 之前一直用的好好的,不过这次却突然出现这样的错误。百思不得其解阿。
折腾了好久,也没找到确切的原因。只能用一些巧法解决。
姑且先纪录下,没准以后能找到原因。当然,如果哪位大神看了我的博客,知道原因,跪求解答。
下面说下我的解决方法吧。
1.下拉刷新视图没有显示设置的背景色
- (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);
这下闹糊涂了。在使用下拉刷新的位置,代码是这样的。
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];
- (void)setState:(EGOPullRefreshState)aState
这函数中找到相应的替换就可以。