子视图不随父视图一起执行动画

在 view 内部初始化 cyan颜色的 subview,其 bottom 和 父视图的 bottom 一致
对应的 vc 中 进行动画处理

weak var weakself = self
UIView.animate(withDuration: 0.5, animations: { 
    weakself?.search_gist_view.frame = CGRect.init(x: 0, y: 40, width: SCREEN_W, height: button.isSelected ? 144 : 44)
})

此时动画效果如下:


子视图不随父视图一起执行动画_第1张图片

子视图不随父视图一起动画
虽然可设置 父视图.layer.masksToBounds = true
设置后 弹出时候的 动画正常,收回的时候,子视图依旧先消失,然后父视图在进行动画

解决: 使用可以设置 UIViewAnimationOptions 的动画开启方式

// public static var layoutSubviews: UIViewAnimationOptions { get } 动画过程中使子视图和父视图一致
weak var weakself = self
UIView.animate(withDuration: 0.5, delay: 0, options: .layoutSubviews, animations: { 

     weakself?.search_gist_view.frame = CGRect.init(x: 0, y: 40, width: SCREEN_W, height: button.isSelected ? 144 : 44)

}, completion: { (is_finished) in

})

效果:


子视图不随父视图一起执行动画_第2张图片

你可能感兴趣的:(子视图不随父视图一起执行动画)