ios - CGAffineTransform 阻塞帧移动

标签 ios objective-c animation user-interface transform

我刚刚意识到一些很奇怪的事情。使用 Xcode 5 中的 Storyboard,我创建了一个非常简单的应用程序;只有一个 View 的 View Controller 。在此 View 上有 slider 和两个图像。当我移动 slider 时,我希望一个图像缩放,另一个图像移动。我将控件连接到 View Controller

TestViewController.h:

@interface TestViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIImageView *scaleImage;
@property (weak, nonatomic) IBOutlet UIImageView *moveImage;

- (IBAction)sliderChanged:(UISlider *)sender;

@end

并在 TestViewController.m 中实现 sliderChanged:

- (IBAction)sliderChanged:(UISlider *)sender {
    self.scaleImage.transform = CGAffineTransformMakeScale([sender value], [sender value]);

    CGRect targetFrame = self.moveImage.frame;
    targetFrame.origin = CGPointMake(targetFrame.origin.x + (100 * [sender value]) - 50, targetFrame.origin.y);
    self.moveImage.frame = targetFrame;
}

奇怪的部分来了。当我拖动 slider 时,比例图像会正确缩放,但移动图像不会移动,直到我释放滑​​ block (即停止拖动)。转换是否以某种方式阻止了绘制调用?

最佳答案

好的。这对我来说仍然是个谜。但是我有一个解决方法。在 View 层而不是 View 上执行转换似乎可以解决问题

- (IBAction)sliderChanged:(UISlider *)sender {
    self.scaleImage.layer.transform = CATransform3DMakeScale([sender value], [sender value], 1.0);

    CGRect targetFrame = self.moveImage.frame;
    targetFrame.origin = CGPointMake(targetFrame.origin.x + (100 * [sender value]) - 50, targetFrame.origin.y);
    self.moveImage.frame = targetFrame;
}

如果有人愿意向我解释这一点,我将不胜感激。否则我会努力继续我的生活:)

关于ios - CGAffineTransform 阻塞帧移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961385/

相关文章:

ios - 如何在 VFL 中编写 topLayoutGuide 约束

objective-c - 在 NSString 中包含 '%'?

ios - 链接器命令失败,退出代码为 1(使用 -v 查看调用

ios - 将可变类更改为不可变类

android - 如何为字幕 View 设置动画效果?

image - SwiftUI 按钮上的动画图像

ios - 扩展 NSCoding 以符合 URL

objective-c - 程序化屏幕截图歪曲了最近邻

ios - UIView动画最后被取消

javascript - 从 Paperscript 到 Javascript