我有一个UITableView,里面有很多单元格。其中还有一些带有图像的标签。但是图像不在每个单元格中,所以我有一个if语句来检查它是否应该被隐藏,如果是,我需要将标签更改为左侧。我可以使用此代码。
if (checking here not relevant) {
cell.liveButton.hidden = YES;
CGRect frame = cell.gameTimeLabel.frame;
frame.origin.x= 27; // move the label 10px to the left since no image will be present
cell.gameTimeLabel.frame= frame;
NSLog(@"in here"); // Checking if this code actually runs
}
因此,当我启动我的应用程序时,标签尚未更改(但它打印出消息"在这里"),然后我有一个计时器,每10秒运行一次重装表。并且下次当控制台再次打印时它会自动更新"在这里"然后标签改变了位置。为什么这样,我如何解决这个问题,以便第一次更改标签?
感谢所有帮助!!
- (void) startTimer{
[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(retrieveData) userInfo:nil repeats:YES];
}
- (void) retrieveData{
gamesInfoArray = [gamesInfoObject fetchData];
[self.tableView reloadData];
}
并在我调用函数来获取json信息的其他类
-(void) fetchData{
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setHTTPMethod:@"GET"];
[request setURL:[NSURL URLWithString:url]];
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *responseCode = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseCode error:&error];
if([responseCode statusCode] != 200){
NSLog(@"Error getting %@, HTTP status code %li", url, (long)[responseCode statusCode]);
}
jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
}
答案 0 :(得分:0)
将左约束添加到标签。为这个约束做出决定。
constLabelLeft.constant = 10; // default 30 maybe
[cell.view needsUpdateConstraints];
答案 1 :(得分:0)
在重新加载数据后,在viewdidload中添加一个漂亮而简单的自定义动画,例如:
[yourtable reloadData];
CATransition *transition = [CATransition animation];
transition.type = kCATransitionPush; //Change here the transition type
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.fillMode = kCAFillModeForwards;
transition.duration = 0.5;
transition.subtype = kCATransitionMoveIn; //Change here the animation to present again the cells
[[yourtable layer] addAnimation:transition forKey:@"UITableViewReloadDataAnimationKey"];
这样,重用单元格会更新,有点棘手,但可以为你工作。您可以更改过渡的类型以获得其他类型的动画。