• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - CGAffineTransform Identity 与 iOS 8 和 XCode 6 不同(没有自动布局)

[复制链接]
菜鸟教程小白 发表于 2022-12-12 12:07:38 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个动画来添加一个 subview ,使它看起来好像来自用户触摸的内部,然后填满整个屏幕。

同样,当 iOS 应用从用户触摸的地方打开时..

- (void) showView : (UIView *) theview : (CGPoint) thepoint {
    CGPoint c = thepoint;
    CGFloat tx = c.x - floorf(theview.center.x) + 10;
    CGFloat ty = c.y - floorf(theview.center.y) + 100;

    [UIView animateWithDuration:0.5
                          delay:0.0
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^{
                         // Transforms
                         CGAffineTransform t = CGAffineTransformMakeTranslation(tx, ty);
                         t = CGAffineTransformScale(t, 0.1, 0.1);
                         theview.transform = t;
                         theview.layer.masksToBounds = YES;
                         [theview setTransform:CGAffineTransformIdentity];

                     }
                     completion:^(BOOL finished) {
                     }];
}

上面的代码做了,直到iOS8..在XCode5.1(iOS7 SDK)下构建

但从 iOS8 SDK、XCode6 开始,行为完全不同

ZOOM 现在的行为很奇怪。我终于能够发现 iOS8 中的 CGAffineTransformIdentity 行为错误(或者我使用错误?)..

我看到很多人都有这个问题,但他们提到了 AutoLayout。我所有的 View 都是以编程方式创建的。我们不使用 nib 文件。(IB)

如何使用 XCode 6 进行这项工作?



Best Answer-推荐答案


经过几个小时的努力,我想出了一个解决方案。我只是将它发布给 future 的用户。

- (void) showView : (UIView *) theview : (CGPoint) thepoint {

    CGPoint c = thepoint;
    CGFloat tx = c.x - (floorf(theview.center.x)) ;
    CGFloat ty = c.y - (floorf(theview.center.y));

    /* The transformation now  is before the animation block */
    CGAffineTransform t = CGAffineTransformMakeTranslation(tx, ty);
    t = CGAffineTransformScale(t, 0.1, 0.1);
    theview.transform = t;
    theview.layer.masksToBounds = YES;

    /* Animate only the CGAffineTransformIdentity */
    [UIView animateWithDuration:0.8
                          delay:0.0
                        options:UIViewAnimationOptionCurveEaseIn
                     animations:^{
                                    theview.layer.masksToBounds = YES;
                                    [theview setTransform:CGAffineTransformIdentity];
                                  }
                     completion:^(BOOL finished) {
                          }];
}

但我不知道,为什么它以前适用于 iOS7 SDK 而不是新的 iOS8 SDK。!

关于ios - CGAffineTransform Identity 与 iOS 8 和 XCode 6 不同(没有自动布局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26409849/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap