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

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

<br />

<br />

效果图:

<br />


Mou icon
Mou 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 />

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容