xia*_*obo 7 objective-c ios uidynamicbehavior uikit-dynamics
我知道外部改变了center,bounds并且transform在UIDynamicItem初始化后会被忽略.
但我需要手动更改transform的UIView,在UIDynamicAnimator系统中.
每次我改变transform它,它将立即被覆盖.
那么任何想法?谢谢.
Rob*_*ier 15
每当你更改其中一个动画属性时,你需要打电话[dynamicAnimator updateItemUsingCurrentState:item]让动态动画师知道你做了它.它会更新它的内部表示以匹配当前状态.
编辑:我从下面的代码中看到你正在尝试修改比例.UIDynamicAnimator仅支持旋转和位置,不支持缩放(或任何其他类型的仿射变换).不幸的是transform,为了实现只是轮换而接管它.我认为这是一个错误UIDynamicAnimator(但后来我发现很多UIKit Dynamics的实现被归类为"错误").
你可以做的是修改你的界限(在通话之前updateItem...)并自己重绘.如果您需要仿射变换的性能,您有几个选择:
CALayer或子视图中并修改其比例(bounds如果您需要碰撞行为仍然有效,请更新您的匹配).<UIDyanamicItem>上NSObject),其通过变换改变你.然后,您可以将请求的变换与您自己的变换相结合.小智 10
您还可以使用UIDynamicBehavior的.action属性在动画的每个刻度处设置所需的变换.
UIAttachmentBehavior *attachment = [[UIAttachmentBehavior alloc] initWithItem:item attachedToAnchor:item.center];
attachment.damping = 0.8f;
attachment.frequency = 0.8f;
attachment.action = ^{
CGAffineTransform currentTransform = item.transform;
item.transform = CGAffineTransformScale(currentTransform, 1.2, 1.2)
};
Run Code Online (Sandbox Code Playgroud)
您需要在操作块中添加逻辑以确定何时应更改比例,以及确定何时更改,否则您的视图将始终为120%.
| 归档时间: |
|
| 查看次数: |
2034 次 |
| 最近记录: |