ios - 使用 CGAffineTransformScale 自定义 UIView 缩放

标签 ios uiview transformation

我正在学习为 iOS 开发,作为教育过程的一部分,我创建了自定义 UIView,它使用 drawRect 来绘制它的内容(Core Graphics + UIBezierPath 基于)。一切都按预期工作, View 是动态的,并根据它的宽度/高度呈现它的内容。现在我想添加溶解动画,它应该看起来像从 100% 缩放到 0%。我写了这段代码来做到这一点:

[UIView animateWithDuration:1 delay:0
                options: UIViewAnimationOptionBeginFromCurrentState
             animations: ^{
     for (CardView *cardView in self.cardsViews) {
         cardView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.01, 0.01);

     }} completion:nil];

但是,此代码不会将我的 View 从 100% 缩放到 0%。它只会让卡片消失(最多)。我尝试了很多缩放方法,但到目前为止我只达到了从 0% 缩放到 100% 的效果。这是我的观点完美的,但不是反向缩放......此外,即使我尝试应用非动画转换,它也不会放大/缩小,例如:

cardView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 0.5);

我看到我的 View 外观发生了一点变化,但没有缩放到 50%,这是肯定的。当我尝试将完全相同的动画逻辑应用于 UILabel 时,它完美地工作了!我在开发自定义 UIView 时错过了什么?为什么缩放 View 可能会出现故障? 非常感谢!

UPDATE #1 此代码使我的 View 正好放大两倍,然后将其缩放回原始大小:

[UIView animateWithDuration:5 delay:0
                    options: UIViewAnimationOptionBeginFromCurrentState
                 animations: ^{
         for (CardView *cardView in self.cardsViews) {
             cardView.transform = CGAffineTransformMakeScale(0.5, 0.5);
         }
    } completion:nil];

最佳答案

使用 CGAffineTransformScale 从 100% 到 0% 很简单:

cardView.view.transform =CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1);

[UIView animateWithDuration:0.3/1.5 animations:^{
        cardView.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.1, 0.1);
    } completion:^(BOOL finished)
    {
              NSLog(@" Animation complet Block");
    }];

关于ios - 使用 CGAffineTransformScale 自定义 UIView 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22121203/

相关文章:

ios - 在自定义范围 slider 上设置 alpha (NMRangerSlider)

ios - 如何测量 Apple Watch 和 iPhone 之间的距离?

ios - UIWebView 刺激器/应用程序?

javascript - 3D div 转换重置

ios - Cordova AJAX 请求不工作

ios - 将数字显示为字符串

iphone - 重叠的 UITextView 边框

ios - 获取触摸 UIView 的手指数量

apache-spark - Spark Countbykey() - 为什么作为一个 Action 来实现

css首字母转换?