南鑫林 лет назад: 5
Родитель
Сommit
4b4c17b0cf

+ 20 - 0
RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj

@@ -543,6 +543,7 @@
 		A7FF1577228C824300A85748 /* OrderModule.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A7FF1576228C824300A85748 /* OrderModule.xcassets */; };
 		A7FF1598228D092A00A85748 /* OrderListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1597228D092A00A85748 /* OrderListModel.swift */; };
 		A7FF159C228D9E3D00A85748 /* OrderRefundDetailModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF159B228D9E3C00A85748 /* OrderRefundDetailModel.swift */; };
+		A7FF1DAA23753A16002B3435 /* PublishEditNewEffectFilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7FF1DA923753A16002B3435 /* PublishEditNewEffectFilterView.swift */; };
 		BD01B1FA22BC673900CE9F36 /* PublishConfirmPhotoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD01B1F822BC673900CE9F36 /* PublishConfirmPhotoController.swift */; };
 		BD01B1FB22BC673A00CE9F36 /* PublishTakePhotoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD01B1F922BC673900CE9F36 /* PublishTakePhotoController.swift */; };
 		BD0808EC22C5BA3100D12E6A /* AliyunCompositionInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = BD0808EA22C5BA3000D12E6A /* AliyunCompositionInfo.m */; };
@@ -1310,6 +1311,7 @@
 		A7FF1576228C824300A85748 /* OrderModule.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = OrderModule.xcassets; sourceTree = "<group>"; };
 		A7FF1597228D092A00A85748 /* OrderListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrderListModel.swift; sourceTree = "<group>"; };
 		A7FF159B228D9E3C00A85748 /* OrderRefundDetailModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrderRefundDetailModel.swift; sourceTree = "<group>"; };
+		A7FF1DA923753A16002B3435 /* PublishEditNewEffectFilterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublishEditNewEffectFilterView.swift; sourceTree = "<group>"; };
 		BD01B1F822BC673900CE9F36 /* PublishConfirmPhotoController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PublishConfirmPhotoController.swift; sourceTree = "<group>"; };
 		BD01B1F922BC673900CE9F36 /* PublishTakePhotoController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PublishTakePhotoController.swift; sourceTree = "<group>"; };
 		BD0808EA22C5BA3000D12E6A /* AliyunCompositionInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AliyunCompositionInfo.m; sourceTree = "<group>"; };
@@ -2667,6 +2669,7 @@
 		A74CF4282373136100BA620E /* View */ = {
 			isa = PBXGroup;
 			children = (
+				A7FF1DA7237539B2002B3435 /* PublishEditNewEffect */,
 				A74CF4302373BA7200BA620E /* PublishEditNewPlayProgressView */,
 				A74CF42F2373B9E300BA620E /* PublishEditNew */,
 			);
@@ -5031,6 +5034,22 @@
 			path = ViewController;
 			sourceTree = "<group>";
 		};
+		A7FF1DA7237539B2002B3435 /* PublishEditNewEffect */ = {
+			isa = PBXGroup;
+			children = (
+				A7FF1DA8237539E1002B3435 /* PublishEditNewEffectFilterView */,
+			);
+			path = PublishEditNewEffect;
+			sourceTree = "<group>";
+		};
+		A7FF1DA8237539E1002B3435 /* PublishEditNewEffectFilterView */ = {
+			isa = PBXGroup;
+			children = (
+				A7FF1DA923753A16002B3435 /* PublishEditNewEffectFilterView.swift */,
+			);
+			path = PublishEditNewEffectFilterView;
+			sourceTree = "<group>";
+		};
 		BD01B1F722BC673900CE9F36 /* PublishTakePhoto */ = {
 			isa = PBXGroup;
 			children = (
@@ -6385,6 +6404,7 @@
 				A70EBBC022561179000AD74F /* Extension+UITableView.swift in Sources */,
 				A72A72B022321DE000B21995 /* CGView.swift in Sources */,
 				A77FAEF6235844BC002A1D08 /* CircleCommentListCommentTableViewCell.swift in Sources */,
+				A7FF1DAA23753A16002B3435 /* PublishEditNewEffectFilterView.swift in Sources */,
 				A7EE5AF2236C131D00309931 /* PublishNewEffectFilterCollectionViewCell.swift in Sources */,
 				A7C0FDF322B65E5400BC1E86 /* FeaturedTopicsTableViewCell.swift in Sources */,
 				A770E61322D6625700CBD0A4 /* ShareCommunityViewCollectionViewCell.swift in Sources */,

+ 0 - 89
RainbowPlanet/RainbowPlanet/Modules/PublishNewModule/PublishEditNew/View/PublishEditNew/PublishEditNewVideoSetView.swift

@@ -7,7 +7,6 @@
 //
 
 import UIKit
-import JXSegmentedView
 
 class PublishEditNewVideoSetView: BaseView {
 
@@ -24,8 +23,6 @@ class PublishEditNewVideoSetView: BaseView {
         addSubview(speedRegulationButton)
         // 播放进度条
         addSubview(playProgressView)
-        // 调速的View
-        addSubview(segmentedView)
         // 左滑手势
         addLeftSwipe()
         // 右滑手势
@@ -81,14 +78,6 @@ class PublishEditNewVideoSetView: BaseView {
             make.left.right.equalToSuperview()
             make.height.equalTo(20)
         }
-        
-        // 调速的View
-        segmentedView.snp.makeConstraints { (make) in
-            make.bottom.equalTo(-(98+kSafeTabBarHeight))
-            make.left.equalTo(14)
-            make.right.equalTo(-14)
-            make.height.equalTo(40)
-        }
     }
     
     /// 返回按钮
@@ -149,50 +138,6 @@ class PublishEditNewVideoSetView: BaseView {
         return playProgressView
     }()
     
-    //1.初始化JXSegmentedViewx
-    lazy var segmentedView: JXSegmentedView = {
-        let segmentedView = JXSegmentedView()
-        segmentedView.backgroundColor = k000000Color.withAlphaComponent(0.3)
-        segmentedView.delegate = self
-        segmentedView.dataSource = segmentedDataSource
-        segmentedView.indicators = [indicator]
-        segmentedView.selectItemAt(index: 2)
-        segmentedView.defaultSelectedIndex = 2
-        segmentedView.cornerRadius = 20
-        segmentedView.masksToBounds = true
-        segmentedView.alpha = 0
-        return segmentedView
-    }()
-    
-    //2.初始化dataSource
-    private lazy var segmentedDataSource: JXSegmentedTitleDataSource = {
-        let segmentedDataSource = JXSegmentedTitleDataSource()
-        segmentedDataSource.titles = ["极慢","慢","标准","快","极快"]
-        segmentedDataSource.isTitleColorGradientEnabled = true
-        segmentedDataSource.isItemSpacingAverageEnabled = true
-        segmentedDataSource.isTitleZoomEnabled = true
-        segmentedDataSource.titleNormalColor = kffffffColor
-        segmentedDataSource.titleSelectedColor = k333333Color
-        segmentedDataSource.titleNormalFont = kRegularFont14!
-        segmentedDataSource.titleSelectedFont = kRegularFont14
-        segmentedDataSource.isTitleStrokeWidthEnabled = false
-        segmentedDataSource.isTitleMaskEnabled = true
-        segmentedDataSource.itemSpacing = 0
-        segmentedDataSource.itemContentWidth = (kScreenWidth-28)/5
-        //reloadData(selectedIndex:)方法一定要调用,方法内部会刷新数据源数组
-        segmentedDataSource.reloadData(selectedIndex: 2)
-        return segmentedDataSource
-    }()
-    
-    //3.初始化指示器indicator
-    private lazy var indicator: JXSegmentedIndicatorBackgroundView = {
-        let indicator = JXSegmentedIndicatorBackgroundView()
-        indicator.indicatorColor = .white
-        indicator.indicatorHeight = 40
-        indicator.backgroundWidthIncrement = 0
-        return indicator
-    }()
-    
     /// 左滑手势
     lazy var leftSwipe: UISwipeGestureRecognizer = {
         let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(leftSwipeAction))
@@ -261,38 +206,4 @@ class PublishEditNewVideoSetView: BaseView {
             tapClosure()
         }
     }
-    
-    /// 调速
-    typealias SpeedClosure = (Int) -> Void
-    var speedClosure : SpeedClosure?
 }
-
-extension PublishEditNewVideoSetView : JXSegmentedViewDelegate {
- 
-    //点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,而不关心具体是点击还是滚动选中的情况。
-    func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
-        if let speedClosure = speedClosure {
-            speedClosure(index)
-        }
-    }
-    
-    // 点击选中的情况才会调用该方法
-    func segmentedView(_ segmentedView: JXSegmentedView, didClickSelectedItemAt index: Int) {
-        //传递didClickSelectedItemAt事件给listContainerView,必须调用!!!
-    }
-    
-    // 滚动选中的情况才会调用该方法(未支持滚动选中)
-    func segmentedView(_ segmentedView: JXSegmentedView, didScrollSelectedItemAt index: Int) {
-        print("\n------滚动选中\(index)")
-    }
-    
-    // 正在滚动中的回调
-    func segmentedView(_ segmentedView: JXSegmentedView, scrollingFrom leftIndex: Int, to rightIndex: Int, percent: CGFloat) {
-    }
-    
-    /// 是否允许点击选中目标index的item
-    func segmentedView(_ segmentedView: JXSegmentedView, canClickItemAt index: Int) -> Bool {
-        return true
-    }
-}
-

+ 233 - 21
RainbowPlanet/RainbowPlanet/Modules/PublishNewModule/PublishEditNew/View/PublishEditNew/PublishEditNewVideoView.swift

@@ -9,6 +9,7 @@
 import UIKit
 import RxSwift
 import RxCocoa
+import JXSegmentedView
 
 class PublishEditNewVideoView: UIView {
 
@@ -23,8 +24,13 @@ class PublishEditNewVideoView: UIView {
         }
     }
     weak var observe : NSObjectProtocol?
+    
+    /// 路径
     var taskPath : String?
+    /// 是否正在播放
     var isPlaying : Bool = true
+    /// 滤镜选中的selected
+    var selectedIndex : Int = 0
     
     override init(frame: CGRect) {
         super.init(frame: frame)
@@ -48,6 +54,8 @@ class PublishEditNewVideoView: UIView {
         backgroundColor = UIColor.black
         addSubview(editorPreview)
         addSubview(publishEditNewVideoSetView)
+        addSubview(effectFilterView)
+        addSubview(segmentedView)
     }
     
     /// 布局
@@ -55,6 +63,14 @@ class PublishEditNewVideoView: UIView {
         publishEditNewVideoSetView.snp.makeConstraints { (make) in
             make.edges.equalToSuperview()
         }
+        
+        // 调速的View
+        segmentedView.snp.makeConstraints { (make) in
+            make.bottom.equalTo(-(98+kSafeTabBarHeight))
+            make.left.equalTo(14)
+            make.right.equalTo(-14)
+            make.height.equalTo(40)
+        }
     }
     
     /// 设置数据
@@ -67,24 +83,30 @@ class PublishEditNewVideoView: UIView {
             UIViewController.topMost?.navigationController?.popViewController(animated: true)
         }).disposed(by: disposeBag)
         
+        // 音乐
+        publishEditNewVideoSetView.musicButton.rx.tap.subscribe(onNext: {[weak self] (data) in
+            guard let strongSelf = self else { return }
+            strongSelf.showHiddenSegmentedView(isHidden: true)
+        }).disposed(by: disposeBag)
+        
+        // 滤镜
+        publishEditNewVideoSetView.filterButton.rx.tap.subscribe(onNext: {[weak self] (data) in
+            guard let strongSelf = self else { return }
+            strongSelf.showHiddenSegmentedView(isHidden: true)
+            strongSelf.effectFilterViewisHidden(isHidden: false)
+        }).disposed(by: disposeBag)
+        
         // 调速view
         publishEditNewVideoSetView.speedRegulationButton.rx.tap.subscribe(onNext: { [weak self] (_) in
             guard let strongSelf = self else { return }
-            if strongSelf.publishEditNewVideoSetView.segmentedView.alpha == 0 {
+            if strongSelf.segmentedView.alpha == 0 {
                 strongSelf.showHiddenSegmentedView(isHidden: false)
-            } else if strongSelf.publishEditNewVideoSetView.segmentedView.alpha == 1 {
+            } else if strongSelf.segmentedView.alpha == 1 {
                 strongSelf.showHiddenSegmentedView(isHidden: true)
             }
 
         }).disposed(by: disposeBag)
         
-        //调速
-        publishEditNewVideoSetView.speedClosure = {
-            [weak self] index in
-            guard let strongSelf = self else { return }
-            strongSelf.speedPlaybackMultiple(index: index)
-        }
-        
         // 播放/暂停
         publishEditNewVideoSetView.playProgressView.playButton.rx.tap.subscribe(onNext: { [weak self] (_) in
             guard let strongSelf = self else { return }
@@ -114,24 +136,62 @@ class PublishEditNewVideoView: UIView {
         }
         
         // 点击手势
+        publishEditNewVideoSetView.tapClosure = {
+            [weak self] in
+            guard let strongSelf = self else { return }
+            // 隐藏调速
+            if  strongSelf.segmentedView.alpha == 1 {
+                strongSelf.showHiddenSegmentedView(isHidden: true)
+            }
+        }
+        
+        // 左滑 滤镜 加 1
+        publishEditNewVideoSetView.leftSwipeClosure = {
+            [weak self] in
+            self?.filterPlus()
+        }
+        // 右滑 滤镜 减 1
+        publishEditNewVideoSetView.rightSwipeClosure = {
+            [weak self] in
+            self?.filterLess()
+        }
+        
         editorPreview.tapClosure = {
             [weak self] in
             guard let strongSelf = self else { return }
-//            if  strongSelf.effectFilterBeautyView.alpha == 1 {
-//                // 隐藏滤镜
-//                strongSelf.effectFilterBeautyViewisHidden(isHidden: true)
-//            }
+            if  strongSelf.effectFilterView.alpha == 1 {
+                // 隐藏滤镜
+                strongSelf.effectFilterViewisHidden(isHidden: true)
+            }
 //
 //            if  strongSelf.musicView.alpha == 1 {
 //                // 隐藏音乐
 //                strongSelf.musicViewisHidden(isHidden: true)
 //            }
-            // 隐藏调速
-            if  strongSelf.publishEditNewVideoSetView.segmentedView.alpha == 1 {
-                strongSelf.showHiddenSegmentedView(isHidden: true)
-            }
         }
         
+        // 左滑 滤镜 加 1
+        editorPreview.leftSwipeClosure = {
+            [weak self] in
+            self?.filterPlus()
+        }
+        // 右滑 滤镜 减 1
+        editorPreview.rightSwipeClosure = {
+            [weak self] in
+            self?.filterLess()
+        }
+        // 滤镜设置
+        effectFilterView.effectFilterView.didSelectCloSure = {
+            [weak self] (index, aliyunEffectFilter) in
+            self?.selectedIndex = index
+            if index == 0 {
+                self?.editor?.removeFilter()
+            }else {
+                self?.editor?.apply(aliyunEffectFilter)
+            }
+            self?.showFilterNameLabel(aliyunEffectFilter: aliyunEffectFilter)
+        }
+
     }
     
     /// 编辑
@@ -175,6 +235,57 @@ class PublishEditNewVideoView: UIView {
         return publishEditNewVideoSetView
     }()
     
+    /// 滤镜跟美颜
+    lazy var effectFilterView: PublishEditNewEffectFilterView = {
+        let effectFilterView = PublishEditNewEffectFilterView(frame: CGRect(x: 0, y: kScreenHeight, width: kScreenWidth, height: 125 + kSafeTabBarHeight))
+        return effectFilterView
+    }()
+    
+    //1.初始化JXSegmentedViewx
+    lazy var segmentedView: JXSegmentedView = {
+        let segmentedView = JXSegmentedView()
+        segmentedView.backgroundColor = k000000Color.withAlphaComponent(0.3)
+        segmentedView.delegate = self
+        segmentedView.dataSource = segmentedDataSource
+        segmentedView.indicators = [indicator]
+        segmentedView.selectItemAt(index: 2)
+        segmentedView.defaultSelectedIndex = 2
+        segmentedView.cornerRadius = 20
+        segmentedView.masksToBounds = true
+        segmentedView.alpha = 0
+        segmentedView.isUserInteractionEnabled = true
+        return segmentedView
+    }()
+    
+    //2.初始化dataSource
+    private lazy var segmentedDataSource: JXSegmentedTitleDataSource = {
+        let segmentedDataSource = JXSegmentedTitleDataSource()
+        segmentedDataSource.titles = ["极慢","慢","标准","快","极快"]
+        segmentedDataSource.isTitleColorGradientEnabled = true
+        segmentedDataSource.isItemSpacingAverageEnabled = true
+        segmentedDataSource.isTitleZoomEnabled = true
+        segmentedDataSource.titleNormalColor = kffffffColor
+        segmentedDataSource.titleSelectedColor = k333333Color
+        segmentedDataSource.titleNormalFont = kRegularFont14!
+        segmentedDataSource.titleSelectedFont = kRegularFont14
+        segmentedDataSource.isTitleStrokeWidthEnabled = false
+        segmentedDataSource.isTitleMaskEnabled = true
+        segmentedDataSource.itemSpacing = 0
+        segmentedDataSource.itemContentWidth = (kScreenWidth-28)/5
+        //reloadData(selectedIndex:)方法一定要调用,方法内部会刷新数据源数组
+        segmentedDataSource.reloadData(selectedIndex: 2)
+        return segmentedDataSource
+    }()
+    
+    //3.初始化指示器indicator
+    private lazy var indicator: JXSegmentedIndicatorBackgroundView = {
+        let indicator = JXSegmentedIndicatorBackgroundView()
+        indicator.indicatorColor = .white
+        indicator.indicatorHeight = 40
+        indicator.backgroundWidthIncrement = 0
+        return indicator
+    }()
+    
 }
 
 extension PublishEditNewVideoView {
@@ -235,7 +346,6 @@ extension PublishEditNewVideoView {
 
     }
     
-    
     /// 显示/隐层 SegmentedView
     func showHiddenSegmentedView(isHidden:Bool) {
         if isHidden {
@@ -247,20 +357,95 @@ extension PublishEditNewVideoView {
             [weak self] in
             guard let strongSelf = self else { return }
             if isHidden {
-                strongSelf.publishEditNewVideoSetView.segmentedView.alpha = 0
+                strongSelf.segmentedView.alpha = 0
             }else {
-                strongSelf.publishEditNewVideoSetView.segmentedView.alpha = 1
+                strongSelf.segmentedView.alpha = 1
             }
         }
 
     }
     
+    /// 滤镜是否显示
+    ///
+    /// - Parameter isHidden: 是否隐藏
+    func effectFilterViewisHidden(isHidden:Bool) {
+        var offsetY : CGFloat = kScreenHeight
+        if isHidden {
+            offsetY = kScreenHeight
+            // 移除点击手势
+            editorPreview.removetap()
+        }else {
+            offsetY = kScreenHeight-(125 + kSafeTabBarHeight)
+            // 添加点击手势
+            editorPreview.addTap()
+        }
+        UIView.animate(withDuration: 0.5) {
+            [weak self] in
+            self?.effectFilterView.frame = CGRect(x: 0, y: offsetY, width: kScreenWidth, height: 125 +
+                kSafeTabBarHeight)
+            if isHidden {
+                self?.effectFilterView.alpha = 0
+                self?.publishEditNewVideoSetView.alpha = 1
+            }else {
+                self?.effectFilterView.alpha = 1
+                self?.publishEditNewVideoSetView.alpha = 0
+            }
+        }
+    }
+    
+    
+    //滤镜 减 1
+    func filterLess() {
+        if selectedIndex > 0 {
+            selectedIndex = selectedIndex - 1
+        }else {
+            selectedIndex = (aliyunFiltersModel?.filters?.count ?? 1) - 1
+        }
+        //选中滤镜
+        didSelectFilter()
+    }
+    
+    //滤镜 加 1
+    func filterPlus() {
+        if selectedIndex < ((aliyunFiltersModel?.filters?.count ?? 0) - 1) {
+            selectedIndex = selectedIndex + 1
+        }else {
+            selectedIndex = 0
+        }
+        //选中滤镜
+        didSelectFilter()
+    }
+    
+    /// 选中滤镜
+    func didSelectFilter() {
+        let indexPath = IndexPath(row: self.selectedIndex , section: 0)
+        effectFilterView.effectFilterView.collectionView(effectFilterView.effectFilterView.collectionView, didSelectItemAt: indexPath)
+        effectFilterView.effectFilterView.collectionView.selectItem(at: indexPath, animated: true, scrollPosition: UICollectionView.ScrollPosition.centeredHorizontally)
+    }
+    /// 滤镜名字显示
+    ///
+    /// - Parameter aliyunEffectFilter: 滤镜模型
+    func showFilterNameLabel(aliyunEffectFilter:AliyunEffectFilter) {
+        
+        editorPreview.filterNameLabel.alpha = 1
+        editorPreview.filterNameLabel.text = aliyunEffectFilter.name
+        UIView.animate(withDuration: 2, animations: {
+            [weak self] in
+            self?.editorPreview.filterNameLabel.alpha = 1
+            }, completion: {
+                [weak self] (finished) in
+                UIView.animate(withDuration: 2, animations: {
+                    [weak self] in
+                    self?.editorPreview.filterNameLabel.alpha = 0
+                })
+        })
+    }
+    
 }
 
 
 extension PublishEditNewVideoView : AliyunIPlayerCallback {
     
-    
     /// 播放结束
     func playerDidEnd() {
         publishEditNewVideoSetView.playProgressView.slider.value = Float(0)
@@ -319,3 +504,30 @@ extension PublishEditNewVideoView : AliyunIExporterCallback {
 extension PublishEditNewVideoView : AliyunIRenderCallback {
     
 }
+
+extension PublishEditNewVideoView : JXSegmentedViewDelegate {
+ 
+    //点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,而不关心具体是点击还是滚动选中的情况。
+    func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
+        speedPlaybackMultiple(index: index)
+    }
+    
+    // 点击选中的情况才会调用该方法
+    func segmentedView(_ segmentedView: JXSegmentedView, didClickSelectedItemAt index: Int) {
+        //传递didClickSelectedItemAt事件给listContainerView,必须调用!!!
+    }
+    
+    // 滚动选中的情况才会调用该方法(未支持滚动选中)
+    func segmentedView(_ segmentedView: JXSegmentedView, didScrollSelectedItemAt index: Int) {
+        print("\n------滚动选中\(index)")
+    }
+    
+    // 正在滚动中的回调
+    func segmentedView(_ segmentedView: JXSegmentedView, scrollingFrom leftIndex: Int, to rightIndex: Int, percent: CGFloat) {
+    }
+    
+    /// 是否允许点击选中目标index的item
+    func segmentedView(_ segmentedView: JXSegmentedView, canClickItemAt index: Int) -> Bool {
+        return true
+    }
+}

+ 40 - 0
RainbowPlanet/RainbowPlanet/Modules/PublishNewModule/PublishEditNew/View/PublishEditNewEffect/PublishEditNewEffectFilterView/PublishEditNewEffectFilterView.swift

@@ -0,0 +1,40 @@
+//
+//  PublishEditNewEffectFilterView.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/11/8.
+//  Copyright © 2019 RainbowPlanet. All rights reserved.
+//
+
+import UIKit
+
+class PublishEditNewEffectFilterView: BaseView {
+
+    override func setupViews() {
+        configRectCorner(corner: [.topLeft,.topRight], radii: CGSize(width: 8, height: 8))
+        clipsToBounds = true
+        addSubview(vibrancyView)
+        addSubview(effectFilterView)
+    }
+    
+    override func setupLayouts() {
+        vibrancyView.snp.makeConstraints { (make) in
+            make.bottom.left.right.equalToSuperview()
+            make.height.equalTo(125 + kSafeTabBarHeight)
+        }
+    }
+    
+    // 毛玻璃效果
+    lazy var vibrancyView: UIVisualEffectView = {
+        let vibrancyView = UIVisualEffectView(frame: self.frame)
+        vibrancyView.effect = UIBlurEffect(style: .dark)
+        return vibrancyView
+    }()
+    
+    // 滤镜View
+    lazy var effectFilterView : PublishNewEffectFilterView = {
+        let effectFilterView = PublishNewEffectFilterView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 125))
+        return effectFilterView
+    }()
+
+}

+ 1 - 1
RainbowPlanet/RainbowPlanet/Modules/PublishNewModule/PublishNew/View/PublishNewEffect/PublishNewEffectFilterView/PublishNewEffectFilterView.swift

@@ -38,7 +38,7 @@ class PublishNewEffectFilterView: BaseView {
         let collectionViewLayout = UICollectionViewFlowLayout.init()
         collectionViewLayout.minimumLineSpacing = 15
         collectionViewLayout.minimumInteritemSpacing = 0
-        collectionViewLayout.itemSize = CGSize(width:52, height: 52)
+        collectionViewLayout.itemSize = CGSize(width:52, height: 82)
         collectionViewLayout.scrollDirection = .horizontal
         collectionViewLayout.sectionInset = UIEdgeInsets(top: 30, left: 14, bottom: 15, right: 14)
         return collectionViewLayout