akh*_*lsa 16 core-animation objective-c uiview uiimageview ios
我知道很多人都问了同样的问题,但是所提出的解决方案似乎都不相关,所以我再问:我有以下代码块:
UIImageView *moneyHolder = [[UIImageView alloc] initWithImage:moneyImage];
if([paymentMethod.viewed intValue] == 0){
//CGRect targetFrame = CGRectMake(0, cell.frame.size.height/2-3, cell.frame.size.width, targetHeight);
CGRect targetFrame = moneyHolder.frame;
targetFrame.origin.y = cell.frame.size.height/2-3;
NSLog(@"animating");
[UIView animateWithDuration:2
delay:0
options: UIViewAnimationCurveEaseOut
animations:^{
moneyHolder.frame = targetFrame;
}
completion:^(BOOL finished){
NSLog(@"done");
}
];
}
Run Code Online (Sandbox Code Playgroud)
我认为应该动画我的moneyHolder框架.不幸的是,这似乎是立即发生,而不是持续2秒.我可以通过日志中的时间戳验证这一点:
2012-05-11 03:41:50.102 AgilePoet [5824:15203]动画
2012-05-11 03:41:50.116 AgilePoet [5824:15203]完成
有没有人对为什么会发生这种情况有任何想法?关于这个主题的所有其他问题都集中在不可动画的属性上,但我知道一个imageview框架是有生命力的.我唯一能想到的是这段代码写在我的内部
-tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath method.
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Dun*_*n C 18
引用文档:
frame框架矩形,用于描述超视图坐标系中视图的位置和大小.
可以对此属性的更改进行动画处理.但是,如果transform属性包含非标识变换,则frame属性的值是未定义的,不应修改.在这种情况下,您可以使用center属性重新定位视图,并使用bounds属性调整大小.
如果您或其他一些代码更改了视图的转换矩阵,则对frame属性的更改将无法按预期工作.
您应该改变中心属性(移动视图)和bounds属性(改变它的大小).这些属性表现如预期.