美文网首页iOSiOS Developer程序员
模仿淘宝选择商品详情时, 折叠后面的视图

模仿淘宝选择商品详情时, 折叠后面的视图

作者: 隔壁小鱼 | 来源:发表于2016-08-14 19:36 被阅读365次

用OC写了一个小Demo, 模仿了淘宝和京东APP在选择商品详情时, 折叠后面的视图的效果.

<br />

<br />

效果图:

<br />


Mou iconMou icon

<br />
<br />

关键思路:

  • 背景视图有一个距离屏幕远近变换的效果, 所以这里必须要用到Transform.m34这个属性.
  • 背景视图旋转时, 分别绕顶部和底部旋转, 所以需要修改图层的anchorPoint属性.
  • 点击图片时, 由于子控件超出父控件, 所以子控件并不能响应点击事件, 这时响应点击事件的是背景视图, 这里需要使用hitTest:方法来改变事件的响应者.
    <br />
    <br />

核心代码:

 //修改锚点
    self.behindV.layer.anchorPoint = CGPointMake(0.5, 0);
    self.behindV.layer.position = CGPointMake([UIScreen mainScreen].bounds.size.width*0.5, 0);


    CATransform3D transform = CATransform3DIdentity;
        
    //眼睛离屏幕的距离.(近大远小.)
    transform.m34 = 1 / 1000.0;
        
    self.behindV.layer.transform = CATransform3DRotate(transform, 7*M_PI/180.0, 1, 0, 0);
//如果当前的点在imageV上, 就让imageV处理事件.
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    CGPoint imageP = [self convertPoint:point toView:self.iconV];
    
    if ([self.iconV pointInside:imageP withEvent:event]) return self.iconV;
    
    else return [super hitTest:point withEvent:event];
}

<br />

代码链接: https://github.com/EvanFisher/FoldBackgroundView
如果你喜欢这个效果, 请给我一颗星星哦...

<br />

相关文章

网友评论

本文标题:模仿淘宝选择商品详情时, 折叠后面的视图

本文链接:https://www.haomeiwen.com/subject/pogysttx.html