基本做完

This commit is contained in:
PengGJ 2025-04-09 18:40:52 +08:00
parent 364e4a8115
commit e010fcb2ff
83 changed files with 6364 additions and 3257 deletions

View File

@ -49,6 +49,9 @@ pod 'GYSDK'
pod 'GTSDK'
pod 'GTExtensionSDK'
pod 'ICGVideoTrimmer'
post_install do |installer|
installer.generated_projects.each do |project|
project.targets.each do |target|

View File

@ -22,6 +22,7 @@ PODS:
- GTCommonSDK (> 3.0.9.0)
- GYSDK (3.0.5.0):
- GTCommonSDK (>= 3.0.0.0)
- ICGVideoTrimmer (1.1)
- IQKeyboardManager (6.5.11)
- libpag (4.3.57)
- LSTTimer (0.2.10)
@ -56,6 +57,7 @@ DEPENDENCIES:
- GTExtensionSDK
- GTSDK
- GYSDK
- ICGVideoTrimmer
- IQKeyboardManager
- libpag
- LSTTimer
@ -86,6 +88,7 @@ SPEC REPOS:
- GTExtensionSDK
- GTSDK
- GYSDK
- ICGVideoTrimmer
- IQKeyboardManager
- libpag
- LSTTimer
@ -116,6 +119,7 @@ SPEC CHECKSUMS:
GTExtensionSDK: 9a5008e262732a2d3f58f3aee1a3e5a91ee20e1d
GTSDK: b002384999146d5b86f1c9b56e20882ffbfd2796
GYSDK: ca742e929db8e65c5a20d4beb4288f23003f898e
ICGVideoTrimmer: 1f54de0595af56af2a406f20cdb33c1c440d15cd
IQKeyboardManager: ef43ce1ba1e5aaf4adf222c0a46f39761f246879
libpag: 4bae06b191f85d9d17c47332151e819673191a2b
LSTTimer: caf8f02ff366ca175cf4c1778d26c166183c1b6f
@ -139,6 +143,6 @@ SPEC CHECKSUMS:
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
ZXSDK: 414bed508b670437a9bdf7c75d49816b8cb7b2d4
PODFILE CHECKSUM: 23a7c93a86f631584bee299c2c8e21fe53940961
PODFILE CHECKSUM: bdc7cf09c0fc5aac17abd7adc84468998a8a9a6d
COCOAPODS: 1.16.2

21
ProductApp/Pods/ICGVideoTrimmer/LICENSE generated Normal file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014 itsmeichigo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,62 @@
# ICGVideoTrimmer
A library for quick video trimming based on `SAVideoRangeSlider`, mimicking the behavior of Instagram's.
![Screenshot](https://raw.githubusercontent.com/itsmeichigo/ICGVideoTrimmer/master/trimmer.gif)
## Note
I've made this very quickly so here's a list of things to do for improvements (pull requests are very much appreciated!):
- ~~Make panning thumb views smoother~~
- ~~Make ruller view more customizable~~
- ~~Added video tracker, mimicking the behaviour of Instagram's~~ - [@FabKremer](https://github.com/FabKremer)
- Bug fixes if any
- More and more, can't remember right now hahha.
## Getting started
#### Using CocoaPods:
Just add the following line in to your pod file:
pod 'ICGVideoTrimmer'
#### Manually add ICGVideoTrimmer as a library:
Drag and drop the subfolder named `Source` in your project and you are done.
### Usage
Create an instance of `ICGVideoTrimmer` using interface builder or programmatically. Give it an asset and set the delegate. You can select theme color for the trimmer view and decide whether to show the ruler view by setting the properties. Finally, don't forget to call `resetSubviews`!
```objective-C
[self.trimmerView setThemeColor:[UIColor lightGrayColor]];
[self.trimmerView setAsset:self.asset];
[self.trimmerView setShowsRulerView:YES];
[self.trimmerView setTrackerColor:[UIColor cyanColor]];
[self.trimmerView setShowsTracker:YES];
[self.trimmerView setDelegate:self];
[self.trimmerView resetSubviews];
```
If necessary, you can also set your desired minimum and maximum length for your trimmed video by setting the properties `minLength` and `maxLength` for the trimmer view. By default, these properties are 3 and 15 (seconds) respectively.
You can also customize your thumb views by setting images for the left and right thumbs:
```objective-C
[self.trimmerView setLeftThumbImage:[UIImage imageNamed:@"left-thumb"]];
[self.trimmerView setRightThumbImage:[UIImage imageNamed:@"right-thumb"]];
```
See the project example to see how to manage the tracker on a video.
## Requirements
ICGVideoTrimmer requires iOS 7 and `MobileCoreServices` and `AVFoundation` frameworks. Honestly I haven't tested it with iOS 6 and below so I can't be too sure if it's compatible.
### ARC
ICGVideoTrimmer uses ARC. If you are using ICGVideoTrimmer in a non-arc project, you
will need to set a `-fobjc-arc` compiler flag on every ICGVideoTrimmer source files. To set a
compiler flag in Xcode, go to your active target and select the "Build Phases" tab. Then select
ICGVideoTrimmer source files, press Enter, insert -fobjc-arc and then "Done" to enable ARC
for ICGVideoTrimmer.
## Contributing
Contributions for bug fixing or improvements are welcome. Feel free to submit a pull request.
## Licence
ICGVideoTrimmer is available under the MIT license. See the LICENSE file for more info.

View File

@ -0,0 +1,18 @@
//
// ICGRulerView.h
// ICGVideoTrimmer
//
// Created by Huong Do on 1/25/15.
// Copyright (c) 2015 ichigo. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ICGRulerView : UIView
@property (assign, nonatomic) CGFloat widthPerSecond;
@property (strong, nonatomic) UIColor *themeColor;
- (instancetype)initWithFrame:(CGRect)frame widthPerSecond:(CGFloat)width themeColor:(UIColor *)color;
@end

View File

@ -0,0 +1,78 @@
//
// ICGRulerView.m
// ICGVideoTrimmer
//
// Created by Huong Do on 1/25/15.
// Copyright (c) 2015 ichigo. All rights reserved.
//
#import "ICGRulerView.h"
@implementation ICGRulerView
- (instancetype)initWithFrame:(CGRect)frame widthPerSecond:(CGFloat)width themeColor:(UIColor *)color
{
self = [super initWithFrame:frame];
if (self) {
_widthPerSecond = width;
_themeColor = color;
}
return self;
}
- (void)drawRect:(CGRect)rect
{
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat leftMargin = 10;
CGFloat topMargin = 0;
CGFloat height = CGRectGetHeight(self.frame);
CGFloat width = CGRectGetWidth(self.frame);
CGFloat minorTickSpace = self.widthPerSecond;
NSInteger multiple = 5;
CGFloat majorTickLength = 12;
CGFloat minorTickLength = 7;
CGFloat baseY = topMargin + height;
CGFloat minorY = baseY - minorTickLength;
CGFloat majorY = baseY - majorTickLength;
NSInteger step = 0;
for (CGFloat x = leftMargin; x <= (leftMargin + width); x += minorTickSpace) {
CGContextMoveToPoint(context, x, baseY);
CGContextSetFillColorWithColor(context, self.themeColor.CGColor);
if (step % multiple == 0) {
CGContextFillRect(context, CGRectMake(x, majorY, 1.75, majorTickLength));
UIFont *font = [UIFont systemFontOfSize:11];
UIColor *textColor = self.themeColor;
NSDictionary *stringAttrs = @{NSFontAttributeName:font, NSForegroundColorAttributeName:textColor};
NSInteger minutes = step / 60;
NSInteger seconds = step % 60;
NSAttributedString* attrStr;
if (minutes > 0) {
attrStr = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%ld:%02ld", (long) minutes, (long) seconds] attributes:stringAttrs];
}
else {
attrStr = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@":%02ld", (long) seconds] attributes:stringAttrs];
}
[attrStr drawAtPoint:CGPointMake(x-7, majorY - 15)];
} else {
CGContextFillRect(context, CGRectMake(x, minorY, 1.0, minorTickLength));
}
step++;
}
}
@end

View File

@ -0,0 +1,19 @@
//
// ICGVideoTrimmerLeftOverlay.h
// ICGVideoTrimmer
//
// Created by Huong Do on 1/19/15.
// Copyright (c) 2015 ichigo. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ICGThumbView : UIView
@property (strong, nonatomic) UIColor *color;
- (instancetype)initWithFrame:(CGRect)frame color:(UIColor *)color right:(BOOL)flag;
- (instancetype)initWithFrame:(CGRect)frame thumbImage:(UIImage *)image;
@end

View File

@ -0,0 +1,81 @@
//
// ICGVideoTrimmerLeftOverlay.m
// ICGVideoTrimmer
//
// Created by Huong Do on 1/19/15.
// Copyright (c) 2015 ichigo. All rights reserved.
//
#import "ICGThumbView.h"
@interface ICGThumbView()
@property (nonatomic) BOOL isRight;
@property (strong, nonatomic) UIImage *thumbImage;
@end
@implementation ICGThumbView
- (instancetype)initWithFrame:(CGRect)frame color:(UIColor *)color right:(BOOL)flag
{
self = [super initWithFrame:frame];
if (self) {
_color = color;
_isRight = flag;
}
return self;
}
- (instancetype)initWithFrame:(CGRect)frame thumbImage:(UIImage *)image
{
self = [super initWithFrame:frame];
if (self) {
self.thumbImage = image;
}
return self;
}
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
CGRect relativeFrame = self.bounds;
UIEdgeInsets hitTestEdgeInsets = UIEdgeInsetsMake(0, -30, 0, -30);
CGRect hitFrame = UIEdgeInsetsInsetRect(relativeFrame, hitTestEdgeInsets);
return CGRectContainsPoint(hitFrame, point);
}
- (void)drawRect:(CGRect)rect
{
// Drawing code
if (self.thumbImage) {
[self.thumbImage drawInRect:rect];
} else {
//// Frames
CGRect bubbleFrame = self.bounds;
//// Rounded Rectangle Drawing
CGRect roundedRectangleRect = CGRectMake(CGRectGetMinX(bubbleFrame), CGRectGetMinY(bubbleFrame), CGRectGetWidth(bubbleFrame), CGRectGetHeight(bubbleFrame));
UIBezierPath *roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect: roundedRectangleRect byRoundingCorners: UIRectCornerTopLeft | UIRectCornerBottomLeft cornerRadii: CGSizeMake(3, 3)];
if (self.isRight) {
roundedRectanglePath = [UIBezierPath bezierPathWithRoundedRect: roundedRectangleRect byRoundingCorners: UIRectCornerTopRight | UIRectCornerBottomRight cornerRadii: CGSizeMake(3, 3)];
}
[roundedRectanglePath closePath];
[self.color setFill];
[roundedRectanglePath fill];
CGRect decoratingRect = CGRectMake(CGRectGetMinX(bubbleFrame)+CGRectGetWidth(bubbleFrame)/2.5, CGRectGetMinY(bubbleFrame)+CGRectGetHeight(bubbleFrame)/4, 1.5, CGRectGetHeight(bubbleFrame)/2);
UIBezierPath *decoratingPath = [UIBezierPath bezierPathWithRoundedRect:decoratingRect byRoundingCorners: UIRectCornerTopLeft | UIRectCornerBottomLeft | UIRectCornerBottomRight | UIRectCornerTopRight cornerRadii: CGSizeMake(1, 1)];
[decoratingPath closePath];
[[UIColor colorWithWhite:1 alpha:0.5] setFill];
[decoratingPath fill];
}
}
@end

View File

@ -0,0 +1,16 @@
//
// ICGVideoTrimmer.h
// ICGVideoTrimmer
//
// Created by Huong Do on 1/29/15.
// Copyright (c) 2015 ichigo. All rights reserved.
//
#ifndef ICGVideoTrimmer_ICGVideoTrimmer_h
#define ICGVideoTrimmer_ICGVideoTrimmer_h
#import "ICGVideoTrimmerView.h"
#import "ICGThumbView.h"
#import "ICGRulerView.h"
#endif

View File

@ -0,0 +1,64 @@
//
// ICGVideoTrimmerView.h
// ICGVideoTrimmer
//
// Created by Huong Do on 1/18/15.
// Copyright (c) 2015 ichigo. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@protocol ICGVideoTrimmerDelegate;
@interface ICGVideoTrimmerView : UIView
// Video to be trimmed
@property (strong, nonatomic) AVAsset *asset;
// Theme color for the trimmer view
@property (strong, nonatomic) UIColor *themeColor;
// Maximum length for the trimmed video
@property (assign, nonatomic) CGFloat maxLength;
// Minimum length for the trimmed video
@property (assign, nonatomic) CGFloat minLength;
// Show ruler view on the trimmer view or not
@property (assign, nonatomic) BOOL showsRulerView;
// Customize color for tracker
@property (assign, nonatomic) UIColor *trackerColor;
// Custom image for the left thumb
@property (strong, nonatomic) UIImage *leftThumbImage;
// Custom image for the right thumb
@property (strong, nonatomic) UIImage *rightThumbImage;
// Custom width for the top and bottom borders
@property (assign, nonatomic) CGFloat borderWidth;
// Custom width for thumb
@property (assign, nonatomic) CGFloat thumbWidth;
@property (weak, nonatomic) IBOutlet id<ICGVideoTrimmerDelegate> delegate;
- (instancetype)initWithAsset:(AVAsset *)asset;
- (instancetype)initWithFrame:(CGRect)frame asset:(AVAsset *)asset;
- (void)resetSubviews;
- (void)seekToTime:(CGFloat)startTime;
- (void)hideTracker:(BOOL)flag;
@end
@protocol ICGVideoTrimmerDelegate <NSObject>
- (void)trimmerView:(ICGVideoTrimmerView *)trimmerView didChangeLeftPosition:(CGFloat)startTime rightPosition:(CGFloat)endTime;
@end

View File

@ -0,0 +1,383 @@
//
// ICGVideoTrimmerView.m
// ICGVideoTrimmer
//
// Created by Huong Do on 1/18/15.
// Copyright (c) 2015 ichigo. All rights reserved.
//
#import "ICGVideoTrimmerView.h"
#import "ICGThumbView.h"
#import "ICGRulerView.h"
@interface ICGVideoTrimmerView() <UIScrollViewDelegate>
@property (strong, nonatomic) UIView *contentView;
@property (strong, nonatomic) UIView *frameView;
@property (strong, nonatomic) UIScrollView *scrollView;
@property (strong, nonatomic) AVAssetImageGenerator *imageGenerator;
@property (strong, nonatomic) UIView *leftOverlayView;
@property (strong, nonatomic) UIView *rightOverlayView;
@property (strong, nonatomic) ICGThumbView *leftThumbView;
@property (strong, nonatomic) ICGThumbView *rightThumbView;
@property (strong, nonatomic) UIView *trackerView;
@property (strong, nonatomic) UIView *topBorder;
@property (strong, nonatomic) UIView *bottomBorder;
@property (nonatomic) CGFloat startTime;
@property (nonatomic) CGFloat endTime;
@property (nonatomic) CGFloat widthPerSecond;
@property (nonatomic) CGPoint leftStartPoint;
@property (nonatomic) CGPoint rightStartPoint;
@property (nonatomic) CGFloat overlayWidth;
@end
@implementation ICGVideoTrimmerView
#pragma mark - Initiation
- (instancetype)initWithAsset:(AVAsset *)asset
{
return [self initWithFrame:CGRectZero asset:asset];
}
- (instancetype)initWithFrame:(CGRect)frame asset:(AVAsset *)asset
{
self = [super initWithFrame:frame];
if (self) {
_asset = asset;
[self resetSubviews];
}
return self;
}
#pragma mark - Private methods
- (CGFloat)thumbWidth
{
return _thumbWidth ?: 10;
}
- (CGFloat)maxLength
{
return _maxLength ?: 15;
}
- (CGFloat)minLength
{
return _minLength ?: 3;
}
- (void)resetSubviews
{
[self setBackgroundColor:[UIColor blackColor]];
[self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame))];
[self addSubview:self.scrollView];
[self.scrollView setDelegate:self];
[self.scrollView setShowsHorizontalScrollIndicator:NO];
self.contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.scrollView.frame), CGRectGetHeight(self.scrollView.frame))];
[self.scrollView setContentSize:self.contentView.frame.size];
[self.scrollView addSubview:self.contentView];
CGFloat ratio = self.showsRulerView ? 0.7 : 1.0;
self.frameView = [[UIView alloc] initWithFrame:CGRectMake(self.thumbWidth, 0, CGRectGetWidth(self.contentView.frame)-2*self.thumbWidth, CGRectGetHeight(self.contentView.frame)*ratio)];
[self.frameView.layer setMasksToBounds:YES];
[self.contentView addSubview:self.frameView];
[self addFrames];
if (self.showsRulerView) {
CGRect rulerFrame = CGRectMake(0, CGRectGetHeight(self.contentView.frame)*0.7, CGRectGetWidth(self.contentView.frame)+self.thumbWidth, CGRectGetHeight(self.contentView.frame)*0.3);
ICGRulerView *rulerView = [[ICGRulerView alloc] initWithFrame:rulerFrame widthPerSecond:self.widthPerSecond themeColor:self.themeColor];
[self.contentView addSubview:rulerView];
}
// add borders
self.topBorder = [[UIView alloc] init];
[self.topBorder setBackgroundColor:self.themeColor];
[self addSubview:self.topBorder];
self.bottomBorder = [[UIView alloc] init];
[self.bottomBorder setBackgroundColor:self.themeColor];
[self addSubview:self.bottomBorder];
// width for left and right overlay views
self.overlayWidth = CGRectGetWidth(self.frame) - (self.minLength * self.widthPerSecond);
// add left overlay view
self.leftOverlayView = [[UIView alloc] initWithFrame:CGRectMake(self.thumbWidth - self.overlayWidth, 0, self.overlayWidth, CGRectGetHeight(self.frameView.frame))];
CGRect leftThumbFrame = CGRectMake(self.overlayWidth-self.thumbWidth, 0, self.thumbWidth, CGRectGetHeight(self.frameView.frame));
if (self.leftThumbImage) {
self.leftThumbView = [[ICGThumbView alloc] initWithFrame:leftThumbFrame thumbImage:self.leftThumbImage];
} else {
self.leftThumbView = [[ICGThumbView alloc] initWithFrame:leftThumbFrame color:self.themeColor right:NO];
}
self.trackerView = [[UIView alloc] initWithFrame:CGRectMake(self.thumbWidth, -5, 3, CGRectGetHeight(self.frameView.frame) + 10)];
self.trackerView.backgroundColor = self.trackerColor ? self.trackerColor : [UIColor whiteColor];
self.trackerView.layer.masksToBounds = true;
self.trackerView.layer.cornerRadius = 2;
[self addSubview:self.trackerView];
[self.leftThumbView.layer setMasksToBounds:YES];
[self.leftOverlayView addSubview:self.leftThumbView];
[self.leftOverlayView setUserInteractionEnabled:YES];
UIPanGestureRecognizer *leftPanGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveLeftOverlayView:)];
[self.leftOverlayView addGestureRecognizer:leftPanGestureRecognizer];
[self.leftOverlayView setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.8]];
[self addSubview:self.leftOverlayView];
// add right overlay view
CGFloat rightViewFrameX = CGRectGetWidth(self.frameView.frame) < CGRectGetWidth(self.frame) ? CGRectGetMaxX(self.frameView.frame) : CGRectGetWidth(self.frame) - self.thumbWidth;
self.rightOverlayView = [[UIView alloc] initWithFrame:CGRectMake(rightViewFrameX, 0, self.overlayWidth, CGRectGetHeight(self.frameView.frame))];
if (self.rightThumbImage) {
self.rightThumbView = [[ICGThumbView alloc] initWithFrame:CGRectMake(0, 0, self.thumbWidth, CGRectGetHeight(self.frameView.frame)) thumbImage:self.rightThumbImage];
} else {
self.rightThumbView = [[ICGThumbView alloc] initWithFrame:CGRectMake(0, 0, self.thumbWidth, CGRectGetHeight(self.frameView.frame)) color:self.themeColor right:YES];
}
[self.rightThumbView.layer setMasksToBounds:YES];
[self.rightOverlayView addSubview:self.rightThumbView];
[self.rightOverlayView setUserInteractionEnabled:YES];
UIPanGestureRecognizer *rightPanGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveRightOverlayView:)];
[self.rightOverlayView addGestureRecognizer:rightPanGestureRecognizer];
[self.rightOverlayView setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.8]];
[self addSubview:self.rightOverlayView];
[self updateBorderFrames];
[self notifyDelegate];
}
- (void)updateBorderFrames
{
CGFloat height = self.borderWidth ? self.borderWidth : 1;
[self.topBorder setFrame:CGRectMake(CGRectGetMaxX(self.leftOverlayView.frame), 0, CGRectGetMinX(self.rightOverlayView.frame)-CGRectGetMaxX(self.leftOverlayView.frame), height)];
[self.bottomBorder setFrame:CGRectMake(CGRectGetMaxX(self.leftOverlayView.frame), CGRectGetHeight(self.frameView.frame)-height, CGRectGetMinX(self.rightOverlayView.frame)-CGRectGetMaxX(self.leftOverlayView.frame), height)];
}
- (void)moveLeftOverlayView:(UIPanGestureRecognizer *)gesture
{
switch (gesture.state) {
case UIGestureRecognizerStateBegan:
self.leftStartPoint = [gesture locationInView:self];
break;
case UIGestureRecognizerStateChanged:
{
CGPoint point = [gesture locationInView:self];
int deltaX = point.x - self.leftStartPoint.x;
CGPoint center = self.leftOverlayView.center;
CGFloat newLeftViewMidX = center.x += deltaX;;
CGFloat maxWidth = CGRectGetMinX(self.rightOverlayView.frame) - (self.minLength * self.widthPerSecond);
CGFloat newLeftViewMinX = newLeftViewMidX - self.overlayWidth/2;
if (newLeftViewMinX < self.thumbWidth - self.overlayWidth) {
newLeftViewMidX = self.thumbWidth - self.overlayWidth + self.overlayWidth/2;
} else if (newLeftViewMinX + self.overlayWidth > maxWidth) {
newLeftViewMidX = maxWidth - self.overlayWidth / 2;
}
self.leftOverlayView.center = CGPointMake(newLeftViewMidX, self.leftOverlayView.center.y);
self.leftStartPoint = point;
[self updateBorderFrames];
[self notifyDelegate];
break;
}
default:
break;
}
}
- (void)moveRightOverlayView:(UIPanGestureRecognizer *)gesture
{
switch (gesture.state) {
case UIGestureRecognizerStateBegan:
self.rightStartPoint = [gesture locationInView:self];
break;
case UIGestureRecognizerStateChanged:
{
CGPoint point = [gesture locationInView:self];
int deltaX = point.x - self.rightStartPoint.x;
CGPoint center = self.rightOverlayView.center;
CGFloat newRightViewMidX = center.x += deltaX;
CGFloat minX = CGRectGetMaxX(self.leftOverlayView.frame) + self.minLength * self.widthPerSecond;
CGFloat maxX = CMTimeGetSeconds([self.asset duration]) <= self.maxLength + 0.5 ? CGRectGetMaxX(self.frameView.frame) : CGRectGetWidth(self.frame) - self.thumbWidth;
if (newRightViewMidX - self.overlayWidth/2 < minX) {
newRightViewMidX = minX + self.overlayWidth/2;
} else if (newRightViewMidX - self.overlayWidth/2 > maxX) {
newRightViewMidX = maxX + self.overlayWidth/2;
}
self.rightOverlayView.center = CGPointMake(newRightViewMidX, self.rightOverlayView.center.y);
self.rightStartPoint = point;
[self updateBorderFrames];
[self notifyDelegate];
break;
}
default:
break;
}
}
- (void)seekToTime:(CGFloat) time
{
CGFloat posToMove = time * self.widthPerSecond + self.thumbWidth - self.scrollView.contentOffset.x;
CGRect trackerFrame = self.trackerView.frame;
trackerFrame.origin.x = posToMove;
self.trackerView.frame = trackerFrame;
}
- (void)hideTracker:(BOOL)flag
{
self.trackerView.hidden = flag;
}
- (void)notifyDelegate
{
CGFloat start = CGRectGetMaxX(self.leftOverlayView.frame) / self.widthPerSecond + (self.scrollView.contentOffset.x -self.thumbWidth) / self.widthPerSecond;
if (!self.trackerView.hidden && start != self.startTime) {
[self seekToTime:start];
}
self.startTime = start;
self.endTime = CGRectGetMinX(self.rightOverlayView.frame) / self.widthPerSecond + (self.scrollView.contentOffset.x - self.thumbWidth) / self.widthPerSecond;
[self.delegate trimmerView:self didChangeLeftPosition:self.startTime rightPosition:self.endTime];
}
- (void)addFrames
{
self.imageGenerator = [AVAssetImageGenerator assetImageGeneratorWithAsset:self.asset];
self.imageGenerator.appliesPreferredTrackTransform = YES;
if ([self isRetina]){
self.imageGenerator.maximumSize = CGSizeMake(CGRectGetWidth(self.frameView.frame)*2, CGRectGetHeight(self.frameView.frame)*2);
} else {
self.imageGenerator.maximumSize = CGSizeMake(CGRectGetWidth(self.frameView.frame), CGRectGetHeight(self.frameView.frame));
}
CGFloat picWidth = 0;
// First image
NSError *error;
CMTime actualTime;
CGImageRef halfWayImage = [self.imageGenerator copyCGImageAtTime:kCMTimeZero actualTime:&actualTime error:&error];
UIImage *videoScreen;
if ([self isRetina]){
videoScreen = [[UIImage alloc] initWithCGImage:halfWayImage scale:2.0 orientation:UIImageOrientationUp];
} else {
videoScreen = [[UIImage alloc] initWithCGImage:halfWayImage];
}
if (halfWayImage != NULL) {
UIImageView *tmp = [[UIImageView alloc] initWithImage:videoScreen];
CGRect rect = tmp.frame;
rect.size.width = videoScreen.size.width;
tmp.frame = rect;
[self.frameView addSubview:tmp];
picWidth = tmp.frame.size.width;
CGImageRelease(halfWayImage);
}
Float64 duration = CMTimeGetSeconds([self.asset duration]);
CGFloat screenWidth = CGRectGetWidth(self.frame) - 2*self.thumbWidth; // quick fix to make up for the width of thumb views
NSInteger actualFramesNeeded;
CGFloat frameViewFrameWidth = (duration / self.maxLength) * screenWidth;
[self.frameView setFrame:CGRectMake(self.thumbWidth, 0, frameViewFrameWidth, CGRectGetHeight(self.frameView.frame))];
CGFloat contentViewFrameWidth = CMTimeGetSeconds([self.asset duration]) <= self.maxLength + 0.5 ? screenWidth + 30 : frameViewFrameWidth;
[self.contentView setFrame:CGRectMake(0, 0, contentViewFrameWidth, CGRectGetHeight(self.contentView.frame))];
[self.scrollView setContentSize:self.contentView.frame.size];
NSInteger minFramesNeeded = screenWidth / picWidth + 1;
actualFramesNeeded = (duration / self.maxLength) * minFramesNeeded + 1;
Float64 durationPerFrame = duration / (actualFramesNeeded*1.0);
self.widthPerSecond = frameViewFrameWidth / duration;
int preferredWidth = 0;
NSMutableArray *times = [[NSMutableArray alloc] init];
for (int i=1; i<actualFramesNeeded; i++){
CMTime time = CMTimeMakeWithSeconds(i*durationPerFrame, 600);
[times addObject:[NSValue valueWithCMTime:time]];
UIImageView *tmp = [[UIImageView alloc] initWithImage:videoScreen];
tmp.tag = i;
CGRect currentFrame = tmp.frame;
currentFrame.origin.x = i*picWidth;
currentFrame.size.width = picWidth;
preferredWidth += currentFrame.size.width;
if( i == actualFramesNeeded-1){
currentFrame.size.width-=6;
}
tmp.frame = currentFrame;
dispatch_async(dispatch_get_main_queue(), ^{
[self.frameView addSubview:tmp];
});
}
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i=1; i<=[times count]; i++) {
CMTime time = [((NSValue *)[times objectAtIndex:i-1]) CMTimeValue];
CGImageRef halfWayImage = [self.imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL];
UIImage *videoScreen;
if ([self isRetina]){
videoScreen = [[UIImage alloc] initWithCGImage:halfWayImage scale:2.0 orientation:UIImageOrientationUp];
} else {
videoScreen = [[UIImage alloc] initWithCGImage:halfWayImage];
}
CGImageRelease(halfWayImage);
dispatch_async(dispatch_get_main_queue(), ^{
UIImageView *imageView = (UIImageView *)[self.frameView viewWithTag:i];
[imageView setImage:videoScreen];
});
}
});
}
- (BOOL)isRetina
{
return ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
([UIScreen mainScreen].scale > 1.0));
}
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (CMTimeGetSeconds([self.asset duration]) <= self.maxLength + 0.5) {
[UIView animateWithDuration:0.3 animations:^{
[scrollView setContentOffset:CGPointZero];
}];
}
[self notifyDelegate];
}
@end

View File

@ -22,6 +22,7 @@ PODS:
- GTCommonSDK (> 3.0.9.0)
- GYSDK (3.0.5.0):
- GTCommonSDK (>= 3.0.0.0)
- ICGVideoTrimmer (1.1)
- IQKeyboardManager (6.5.11)
- libpag (4.3.57)
- LSTTimer (0.2.10)
@ -56,6 +57,7 @@ DEPENDENCIES:
- GTExtensionSDK
- GTSDK
- GYSDK
- ICGVideoTrimmer
- IQKeyboardManager
- libpag
- LSTTimer
@ -86,6 +88,7 @@ SPEC REPOS:
- GTExtensionSDK
- GTSDK
- GYSDK
- ICGVideoTrimmer
- IQKeyboardManager
- libpag
- LSTTimer
@ -116,6 +119,7 @@ SPEC CHECKSUMS:
GTExtensionSDK: 9a5008e262732a2d3f58f3aee1a3e5a91ee20e1d
GTSDK: b002384999146d5b86f1c9b56e20882ffbfd2796
GYSDK: ca742e929db8e65c5a20d4beb4288f23003f898e
ICGVideoTrimmer: 1f54de0595af56af2a406f20cdb33c1c440d15cd
IQKeyboardManager: ef43ce1ba1e5aaf4adf222c0a46f39761f246879
libpag: 4bae06b191f85d9d17c47332151e819673191a2b
LSTTimer: caf8f02ff366ca175cf4c1778d26c166183c1b6f
@ -139,6 +143,6 @@ SPEC CHECKSUMS:
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
ZXSDK: 414bed508b670437a9bdf7c75d49816b8cb7b2d4
PODFILE CHECKSUM: 23a7c93a86f631584bee299c2c8e21fe53940961
PODFILE CHECKSUM: bdc7cf09c0fc5aac17abd7adc84468998a8a9a6d
COCOAPODS: 1.16.2

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1600"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ED35DBC4444F7F4FCFEA05DA40769B50"
BuildableName = "ICGVideoTrimmer.framework"
BlueprintName = "ICGVideoTrimmer"
ReferencedContainer = "container:Pods.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -34,6 +34,11 @@
<key>isShown</key>
<false/>
</dict>
<key>ICGVideoTrimmer.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
</dict>
<key>IQKeyboardManager.xcscheme</key>
<dict>
<key>isShown</key>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>${PODS_DEVELOPMENT_LANGUAGE}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>${CURRENT_PROJECT_VERSION}</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

View File

@ -0,0 +1,5 @@
#import <Foundation/Foundation.h>
@interface PodsDummy_ICGVideoTrimmer : NSObject
@end
@implementation PodsDummy_ICGVideoTrimmer
@end

View File

@ -0,0 +1,12 @@
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif

View File

@ -0,0 +1,20 @@
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C"
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
#import "ICGRulerView.h"
#import "ICGThumbView.h"
#import "ICGVideoTrimmer.h"
#import "ICGVideoTrimmerView.h"
FOUNDATION_EXPORT double ICGVideoTrimmerVersionNumber;
FOUNDATION_EXPORT const unsigned char ICGVideoTrimmerVersionString[];

View File

@ -0,0 +1,13 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ICGVideoTrimmer
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -framework "MobileCoreServices" -framework "UIKit"
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/ICGVideoTrimmer
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

View File

@ -0,0 +1,6 @@
framework module ICGVideoTrimmer {
umbrella header "ICGVideoTrimmer-umbrella.h"
export *
module * { export * }
}

View File

@ -0,0 +1,13 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ICGVideoTrimmer
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -framework "MobileCoreServices" -framework "UIKit"
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
PODS_ROOT = ${SRCROOT}
PODS_TARGET_SRCROOT = ${PODS_ROOT}/ICGVideoTrimmer
PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
SKIP_INSTALL = YES
USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

View File

@ -458,6 +458,30 @@ Public License instead of this License.
## ICGVideoTrimmer
The MIT License (MIT)
Copyright (c) 2014 itsmeichigo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## IQKeyboardManager
MIT License

View File

@ -505,6 +505,36 @@ Public License instead of this License.
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string>The MIT License (MIT)
Copyright (c) 2014 itsmeichigo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.</string>
<key>License</key>
<string>MIT</string>
<key>Title</key>
<string>ICGVideoTrimmer</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>FooterText</key>
<string>MIT License

View File

@ -1,6 +1,7 @@
${PODS_ROOT}/Target Support Files/Pods-ProductApp/Pods-ProductApp-frameworks.sh
${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework
${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework
${BUILT_PRODUCTS_DIR}/ICGVideoTrimmer/ICGVideoTrimmer.framework
${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework
${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework
${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework

View File

@ -1,5 +1,6 @@
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ICGVideoTrimmer.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTTimer.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework

View File

@ -1,6 +1,7 @@
${PODS_ROOT}/Target Support Files/Pods-ProductApp/Pods-ProductApp-frameworks.sh
${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework
${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework
${BUILT_PRODUCTS_DIR}/ICGVideoTrimmer/ICGVideoTrimmer.framework
${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework
${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework
${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework

View File

@ -1,5 +1,6 @@
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ICGVideoTrimmer.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTTimer.framework
${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework

View File

@ -178,6 +178,7 @@ code_sign_if_enabled() {
if [[ "$CONFIGURATION" == "Debug" ]]; then
install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework"
install_framework "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework"
install_framework "${BUILT_PRODUCTS_DIR}/ICGVideoTrimmer/ICGVideoTrimmer.framework"
install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework"
install_framework "${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework"
install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework"
@ -197,6 +198,7 @@ fi
if [[ "$CONFIGURATION" == "Release" ]]; then
install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework"
install_framework "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework"
install_framework "${BUILT_PRODUCTS_DIR}/ICGVideoTrimmer/ICGVideoTrimmer.framework"
install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework"
install_framework "${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework"
install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework"

View File

@ -1,13 +1,13 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor" "${PODS_ROOT}/GTCommonSDK" "${PODS_ROOT}/GTExtensionSDK" "${PODS_ROOT}/GTSDK" "${PODS_ROOT}/GYSDK" "${PODS_ROOT}/UMAPM/UMAPM_1.9.1" "${PODS_ROOT}/UMCCommonLog/UMCommonLog" "${PODS_ROOT}/UMCommon/UMCommon_7.4.7" "${PODS_ROOT}/UMDevice/UMDevice_3.4.0" "${PODS_ROOT}/UMLink" "${PODS_ROOT}/ZXSDK" "${PODS_ROOT}/libpag/framework" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTCommonSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTExtensionSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UMCommon" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UMDevice" "${PODS_XCFRAMEWORKS_BUILD_DIR}/libpag"
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/ICGVideoTrimmer" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor" "${PODS_ROOT}/GTCommonSDK" "${PODS_ROOT}/GTExtensionSDK" "${PODS_ROOT}/GTSDK" "${PODS_ROOT}/GYSDK" "${PODS_ROOT}/UMAPM/UMAPM_1.9.1" "${PODS_ROOT}/UMCCommonLog/UMCommonLog" "${PODS_ROOT}/UMCommon/UMCommon_7.4.7" "${PODS_ROOT}/UMDevice/UMDevice_3.4.0" "${PODS_ROOT}/UMLink" "${PODS_ROOT}/ZXSDK" "${PODS_ROOT}/libpag/framework" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTCommonSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTExtensionSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UMCommon" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UMDevice" "${PODS_XCFRAMEWORKS_BUILD_DIR}/libpag"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager/MOFSPickerManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout/SDAutoLayout.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell/UITableView_FDTemplateLayoutCell.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor/YiVideoEditor.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/WechatOpenSDK"
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ICGVideoTrimmer/ICGVideoTrimmer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager/MOFSPickerManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout/SDAutoLayout.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell/UITableView_FDTemplateLayoutCell.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor/YiVideoEditor.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/WechatOpenSDK"
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/WechatOpenSDK/OpenSDK2.0.4" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "Accelerate" -framework "AdSupport" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreText" -framework "DZNEmptyDataSet" -framework "Foundation" -framework "GTCommonSDK" -framework "GTExtensionSDK" -framework "GTSDK" -framework "GeYanSdk" -framework "IQKeyboardManager" -framework "ImageIO" -framework "LSTTimer" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MOFSPickerManager" -framework "Masonry" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Reachability" -framework "SDAutoLayout" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "UITableView_FDTemplateLayoutCell" -framework "UMAPM" -framework "UMCommon" -framework "UMCommonLog" -framework "UMDevice" -framework "UMLink" -framework "VideoToolbox" -framework "WebKit" -framework "YYModel" -framework "YYText" -framework "YiVideoEditor" -framework "ZXSDK" -framework "libpag" -weak_framework "AppTrackingTransparency" -weak_framework "Network" -weak_framework "UserNotifications"
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTCommonSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTExtensionSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GYSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMAPM" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMCCommonLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMDevice" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMLink" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor" "-F${PODS_CONFIGURATION_BUILD_DIR}/ZXSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/libpag"
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "Accelerate" -framework "AdSupport" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreText" -framework "DZNEmptyDataSet" -framework "Foundation" -framework "GTCommonSDK" -framework "GTExtensionSDK" -framework "GTSDK" -framework "GeYanSdk" -framework "ICGVideoTrimmer" -framework "IQKeyboardManager" -framework "ImageIO" -framework "LSTTimer" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MOFSPickerManager" -framework "Masonry" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Reachability" -framework "SDAutoLayout" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "UITableView_FDTemplateLayoutCell" -framework "UMAPM" -framework "UMCommon" -framework "UMCommonLog" -framework "UMDevice" -framework "UMLink" -framework "VideoToolbox" -framework "WebKit" -framework "YYModel" -framework "YYText" -framework "YiVideoEditor" -framework "ZXSDK" -framework "libpag" -weak_framework "AppTrackingTransparency" -weak_framework "Network" -weak_framework "UserNotifications"
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTCommonSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTExtensionSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GYSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/ICGVideoTrimmer" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMAPM" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMCCommonLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMDevice" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMLink" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor" "-F${PODS_CONFIGURATION_BUILD_DIR}/ZXSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/libpag"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

View File

@ -1,13 +1,13 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor" "${PODS_ROOT}/GTCommonSDK" "${PODS_ROOT}/GTExtensionSDK" "${PODS_ROOT}/GTSDK" "${PODS_ROOT}/GYSDK" "${PODS_ROOT}/UMAPM/UMAPM_1.9.1" "${PODS_ROOT}/UMCCommonLog/UMCommonLog" "${PODS_ROOT}/UMCommon/UMCommon_7.4.7" "${PODS_ROOT}/UMDevice/UMDevice_3.4.0" "${PODS_ROOT}/UMLink" "${PODS_ROOT}/ZXSDK" "${PODS_ROOT}/libpag/framework" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTCommonSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTExtensionSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UMCommon" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UMDevice" "${PODS_XCFRAMEWORKS_BUILD_DIR}/libpag"
FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/ICGVideoTrimmer" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "${PODS_CONFIGURATION_BUILD_DIR}/YYText" "${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor" "${PODS_ROOT}/GTCommonSDK" "${PODS_ROOT}/GTExtensionSDK" "${PODS_ROOT}/GTSDK" "${PODS_ROOT}/GYSDK" "${PODS_ROOT}/UMAPM/UMAPM_1.9.1" "${PODS_ROOT}/UMCCommonLog/UMCommonLog" "${PODS_ROOT}/UMCommon/UMCommon_7.4.7" "${PODS_ROOT}/UMDevice/UMDevice_3.4.0" "${PODS_ROOT}/UMLink" "${PODS_ROOT}/ZXSDK" "${PODS_ROOT}/libpag/framework" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTCommonSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTExtensionSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GTSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UMCommon" "${PODS_XCFRAMEWORKS_BUILD_DIR}/UMDevice" "${PODS_XCFRAMEWORKS_BUILD_DIR}/libpag"
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager/MOFSPickerManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout/SDAutoLayout.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell/UITableView_FDTemplateLayoutCell.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor/YiVideoEditor.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/WechatOpenSDK"
HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ICGVideoTrimmer/ICGVideoTrimmer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager/IQKeyboardManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager/MOFSPickerManager.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Reachability/Reachability.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout/SDAutoLayout.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView/SDCycleScrollView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell/UITableView_FDTemplateLayoutCell.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYModel/YYModel.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YYText/YYText.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor/YiVideoEditor.framework/Headers" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/WechatOpenSDK"
LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/WechatOpenSDK/OpenSDK2.0.4" "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "Accelerate" -framework "AdSupport" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreText" -framework "DZNEmptyDataSet" -framework "Foundation" -framework "GTCommonSDK" -framework "GTExtensionSDK" -framework "GTSDK" -framework "GeYanSdk" -framework "IQKeyboardManager" -framework "ImageIO" -framework "LSTTimer" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MOFSPickerManager" -framework "Masonry" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Reachability" -framework "SDAutoLayout" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "UITableView_FDTemplateLayoutCell" -framework "UMAPM" -framework "UMCommon" -framework "UMCommonLog" -framework "UMDevice" -framework "UMLink" -framework "VideoToolbox" -framework "WebKit" -framework "YYModel" -framework "YYText" -framework "YiVideoEditor" -framework "ZXSDK" -framework "libpag" -weak_framework "AppTrackingTransparency" -weak_framework "Network" -weak_framework "UserNotifications"
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTCommonSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTExtensionSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GYSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMAPM" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMCCommonLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMDevice" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMLink" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor" "-F${PODS_CONFIGURATION_BUILD_DIR}/ZXSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/libpag"
OTHER_LDFLAGS = $(inherited) -ObjC -l"WechatOpenSDK" -l"c++" -l"resolv" -l"sqlite3" -l"sqlite3.0" -l"z" -framework "AFNetworking" -framework "AVFoundation" -framework "Accelerate" -framework "AdSupport" -framework "CFNetwork" -framework "CoreFoundation" -framework "CoreGraphics" -framework "CoreLocation" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreText" -framework "DZNEmptyDataSet" -framework "Foundation" -framework "GTCommonSDK" -framework "GTExtensionSDK" -framework "GTSDK" -framework "GeYanSdk" -framework "ICGVideoTrimmer" -framework "IQKeyboardManager" -framework "ImageIO" -framework "LSTTimer" -framework "MBProgressHUD" -framework "MJRefresh" -framework "MOFSPickerManager" -framework "Masonry" -framework "MobileCoreServices" -framework "QuartzCore" -framework "Reachability" -framework "SDAutoLayout" -framework "SDCycleScrollView" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "UITableView_FDTemplateLayoutCell" -framework "UMAPM" -framework "UMCommon" -framework "UMCommonLog" -framework "UMDevice" -framework "UMLink" -framework "VideoToolbox" -framework "WebKit" -framework "YYModel" -framework "YYText" -framework "YiVideoEditor" -framework "ZXSDK" -framework "libpag" -weak_framework "AppTrackingTransparency" -weak_framework "Network" -weak_framework "UserNotifications"
OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTCommonSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTExtensionSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GTSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/GYSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/ICGVideoTrimmer" "-F${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/MOFSPickerManager" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/Reachability" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDAutoLayout" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDCycleScrollView" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/UITableView+FDTemplateLayoutCell" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMAPM" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMCCommonLog" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMCommon" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMDevice" "-F${PODS_CONFIGURATION_BUILD_DIR}/UMLink" "-F${PODS_CONFIGURATION_BUILD_DIR}/WechatOpenSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYModel" "-F${PODS_CONFIGURATION_BUILD_DIR}/YYText" "-F${PODS_CONFIGURATION_BUILD_DIR}/YiVideoEditor" "-F${PODS_CONFIGURATION_BUILD_DIR}/ZXSDK" "-F${PODS_CONFIGURATION_BUILD_DIR}/libpag"
OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
PODS_BUILD_DIR = ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

View File

@ -101,6 +101,13 @@
CA4401892DA3C4BD00DFD65C /* HuiYuanZXGoodsView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA4401882DA3C4BD00DFD65C /* HuiYuanZXGoodsView.m */; };
CA44018C2DA3C4C900DFD65C /* HuiYuanZXGoodsCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CA44018B2DA3C4C900DFD65C /* HuiYuanZXGoodsCollectionViewCell.m */; };
CA44018E2DA3C76E00DFD65C /* D-DIN-PRO-700-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = CA44018D2DA3C76E00DFD65C /* D-DIN-PRO-700-Bold.otf */; };
CA87E1A22DA621C100005681 /* ShiPingEditJGViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CA87E1A12DA621C100005681 /* ShiPingEditJGViewController.m */; };
CA87E1A62DA621F800005681 /* ShiPingEditJGView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA87E1A52DA621F800005681 /* ShiPingEditJGView.m */; };
CA87E1AA2DA6421C00005681 /* ShiPingEditShuiYinView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA87E1A92DA6421C00005681 /* ShiPingEditShuiYinView.m */; };
CA87E1AE2DA66AF900005681 /* load_start.pag in Resources */ = {isa = PBXBuildFile; fileRef = CA87E1AD2DA66AF900005681 /* load_start.pag */; };
CA87E1AF2DA66AF900005681 /* download_progress.pag in Resources */ = {isa = PBXBuildFile; fileRef = CA87E1AB2DA66AF900005681 /* download_progress.pag */; };
CA87E1B02DA66AF900005681 /* download_success.pag in Resources */ = {isa = PBXBuildFile; fileRef = CA87E1AC2DA66AF900005681 /* download_success.pag */; };
CA87E1B42DA6754200005681 /* ShiPingEditShiChangView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA87E1B32DA6754200005681 /* ShiPingEditShiChangView.m */; };
CA9934F52D9CE0D100E3F6CB /* ShouYeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CA9934F42D9CE0D100E3F6CB /* ShouYeViewController.m */; };
CA9934F82D9CE0DA00E3F6CB /* JiLuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CA9934F72D9CE0DA00E3F6CB /* JiLuViewController.m */; };
CA9934FB2D9CE0E100E3F6CB /* WoDeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CA9934FA2D9CE0E100E3F6CB /* WoDeViewController.m */; };
@ -515,6 +522,17 @@
CA44018A2DA3C4C900DFD65C /* HuiYuanZXGoodsCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HuiYuanZXGoodsCollectionViewCell.h; sourceTree = "<group>"; };
CA44018B2DA3C4C900DFD65C /* HuiYuanZXGoodsCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HuiYuanZXGoodsCollectionViewCell.m; sourceTree = "<group>"; };
CA44018D2DA3C76E00DFD65C /* D-DIN-PRO-700-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "D-DIN-PRO-700-Bold.otf"; sourceTree = "<group>"; };
CA87E1A02DA621C100005681 /* ShiPingEditJGViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ShiPingEditJGViewController.h; sourceTree = "<group>"; };
CA87E1A12DA621C100005681 /* ShiPingEditJGViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShiPingEditJGViewController.m; sourceTree = "<group>"; };
CA87E1A42DA621F800005681 /* ShiPingEditJGView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ShiPingEditJGView.h; sourceTree = "<group>"; };
CA87E1A52DA621F800005681 /* ShiPingEditJGView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShiPingEditJGView.m; sourceTree = "<group>"; };
CA87E1A82DA6421C00005681 /* ShiPingEditShuiYinView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ShiPingEditShuiYinView.h; sourceTree = "<group>"; };
CA87E1A92DA6421C00005681 /* ShiPingEditShuiYinView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShiPingEditShuiYinView.m; sourceTree = "<group>"; };
CA87E1AB2DA66AF900005681 /* download_progress.pag */ = {isa = PBXFileReference; lastKnownFileType = file; path = download_progress.pag; sourceTree = "<group>"; };
CA87E1AC2DA66AF900005681 /* download_success.pag */ = {isa = PBXFileReference; lastKnownFileType = file; path = download_success.pag; sourceTree = "<group>"; };
CA87E1AD2DA66AF900005681 /* load_start.pag */ = {isa = PBXFileReference; lastKnownFileType = file; path = load_start.pag; sourceTree = "<group>"; };
CA87E1B22DA6754200005681 /* ShiPingEditShiChangView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ShiPingEditShiChangView.h; sourceTree = "<group>"; };
CA87E1B32DA6754200005681 /* ShiPingEditShiChangView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShiPingEditShiChangView.m; sourceTree = "<group>"; };
CA9934F32D9CE0D100E3F6CB /* ShouYeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ShouYeViewController.h; sourceTree = "<group>"; };
CA9934F42D9CE0D100E3F6CB /* ShouYeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShouYeViewController.m; sourceTree = "<group>"; };
CA9934F62D9CE0DA00E3F6CB /* JiLuViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JiLuViewController.h; sourceTree = "<group>"; };
@ -1561,6 +1579,43 @@
path = cell;
sourceTree = "<group>";
};
CA87E19F2DA6219D00005681 /* 结果页面 */ = {
isa = PBXGroup;
children = (
CA87E1A32DA621ED00005681 /* view */,
CA87E1A02DA621C100005681 /* ShiPingEditJGViewController.h */,
CA87E1A12DA621C100005681 /* ShiPingEditJGViewController.m */,
);
path = "结果页面";
sourceTree = "<group>";
};
CA87E1A32DA621ED00005681 /* view */ = {
isa = PBXGroup;
children = (
CA87E1A42DA621F800005681 /* ShiPingEditJGView.h */,
CA87E1A52DA621F800005681 /* ShiPingEditJGView.m */,
);
path = view;
sourceTree = "<group>";
};
CA87E1A72DA641E100005681 /* 印记 */ = {
isa = PBXGroup;
children = (
CA87E1A82DA6421C00005681 /* ShiPingEditShuiYinView.h */,
CA87E1A92DA6421C00005681 /* ShiPingEditShuiYinView.m */,
);
path = "印记";
sourceTree = "<group>";
};
CA87E1B12DA6750500005681 /* 时长剪切 */ = {
isa = PBXGroup;
children = (
CA87E1B22DA6754200005681 /* ShiPingEditShiChangView.h */,
CA87E1B32DA6754200005681 /* ShiPingEditShiChangView.m */,
);
path = "时长剪切";
sourceTree = "<group>";
};
CA9934F02D9CE0B400E3F6CB /* 首页 */ = {
isa = PBXGroup;
children = (
@ -2121,6 +2176,9 @@
CAC346CE2D9E22E700E7E3D6 /* 视频处理 */ = {
isa = PBXGroup;
children = (
CA87E19F2DA6219D00005681 /* 结果页面 */,
CA87E1B12DA6750500005681 /* 时长剪切 */,
CA87E1A72DA641E100005681 /* 印记 */,
CAC346F22D9E2CFD00E7E3D6 /* 图像标记 */,
CAC346D22D9E234100E7E3D6 /* view */,
CAC346CF2D9E22FC00E7E3D6 /* ShiPingEditHomeViewController.h */,
@ -2284,6 +2342,9 @@
CA4401082DA3724C00DFD65C /* D-DIN-PRO-500-Medium.otf */,
CA9935002D9CEA7200E3F6CB /* AlimamaShuHeiTi.ttf */,
CA4401062DA36EDB00DFD65C /* YouSheBiaoTiHei.TTF */,
CA87E1AB2DA66AF900005681 /* download_progress.pag */,
CA87E1AC2DA66AF900005681 /* download_success.pag */,
CA87E1AD2DA66AF900005681 /* load_start.pag */,
CA3CD6142D9140FB002707C1 /* PrivacyInfo.xcprivacy */,
CAC346F62D9E394200E7E3D6 /* ProductApp-Bridging-Header.h */,
);
@ -3133,6 +3194,9 @@
CA3CD6012D9140D5002707C1 /* Pay_Public_SelectN@2x.png in Resources */,
CA3CD6022D9140D5002707C1 /* Pay_Public_支付宝.png in Resources */,
CA3CD6032D9140D5002707C1 /* Pay_Public_yhN.png in Resources */,
CA87E1AE2DA66AF900005681 /* load_start.pag in Resources */,
CA87E1AF2DA66AF900005681 /* download_progress.pag in Resources */,
CA87E1B02DA66AF900005681 /* download_success.pag in Resources */,
CA3CD6042D9140D5002707C1 /* Pay_Public_yhNOT.png in Resources */,
CA3CD6052D9140D5002707C1 /* Pay_Public_go@3x.png in Resources */,
CA3CD6062D9140D5002707C1 /* Pay_Public_SelectNOT@2x.png in Resources */,
@ -3304,6 +3368,7 @@
CA4400FD2DA3670000DFD65C /* WoDeTableViewCell.m in Sources */,
CA3CD5A92D913D27002707C1 /* UserLoginModel.m in Sources */,
CA3CD5AA2D913D27002707C1 /* UserCodeModel.m in Sources */,
CA87E1A22DA621C100005681 /* ShiPingEditJGViewController.m in Sources */,
CAC347042D9E5FEC00E7E3D6 /* ShiPingTiQuYinPingView.m in Sources */,
CA3CD5AB2D913D27002707C1 /* UserConfigModel.m in Sources */,
CA3CD5AC2D913D27002707C1 /* M3u8Model.m in Sources */,
@ -3370,6 +3435,7 @@
CB489FA32744A0BD00DA044A /* ZJContentView.m in Sources */,
CAAD73A72DA4B62300927BA5 /* FenPianModel.m in Sources */,
CAAD73A82DA4B62300927BA5 /* FLDownloadPGJNetworkFenPian.m in Sources */,
CA87E1B42DA6754200005681 /* ShiPingEditShiChangView.m in Sources */,
CB489F6C2744A0BD00DA044A /* RadianDisView.m in Sources */,
CB489DDB27449D5D00DA044A /* main.m in Sources */,
CB489FB02744A0BD00DA044A /* FSActionSheet.m in Sources */,
@ -3396,6 +3462,7 @@
CAAD73582DA4B2AC00927BA5 /* ffmpeg_filter.c in Sources */,
CA4401862DA3C2CA00DFD65C /* HuiYuanZXQuanYiCollectionViewCell.m in Sources */,
CB489F7B2744A0BD00DA044A /* UIImageView+VideoImageView.m in Sources */,
CA87E1A62DA621F800005681 /* ShiPingEditJGView.m in Sources */,
CAAD73A02DA4B61B00927BA5 /* M3u8DownLoadManager.m in Sources */,
CAAD73A12DA4B61B00927BA5 /* M3u8SaveToMainger.m in Sources */,
CAAD73BB2DA4D48600927BA5 /* NomoAlterView.m in Sources */,
@ -3414,6 +3481,7 @@
CA9935412D9D3E4000E3F6CB /* ShiPingTopSelectView.m in Sources */,
CAAD73BE2DA4EE5E00927BA5 /* TongYiXieYiAlterView.m in Sources */,
CB489F962744A0BD00DA044A /* SmsloginCodeModel.m in Sources */,
CA87E1AA2DA6421C00005681 /* ShiPingEditShuiYinView.m in Sources */,
CA4401132DA37DF900DFD65C /* DuiHuanZSGZSMView.m in Sources */,
CA4401172DA381E000DFD65C /* ShareAlterView.m in Sources */,
CB489F712744A0BD00DA044A /* RootTabBarController.m in Sources */,
@ -3630,6 +3698,7 @@
CODE_SIGN_ENTITLEMENTS = ProductApp/ProductApp.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = B8MTNU3W9A;
ENABLE_BITCODE = NO;
@ -3658,9 +3727,10 @@
);
INFOPLIST_FILE = ProductApp/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "快存视频";
INFOPLIST_KEY_NSCameraUsageDescription = "掌上学课件学习和考试人脸识别需要使用相机";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "掌上学保存培训证书需要使用相册";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "保存相册";
INFOPLIST_KEY_NSCalendarsUsageDescription = "快存视频需要使用日历功能";
INFOPLIST_KEY_NSCameraUsageDescription = "快存视频图片处理和意见反馈需要使用相机拍摄照片";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "快存视频保存图片、处理图片和意见反馈需要使用相册";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "快存视频保存图片、处理图片和意见反馈需要使用相册";
INFOPLIST_KEY_NSUserTrackingUsageDescription = "快存视频用于向您推荐个性化广告";
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
@ -3700,6 +3770,7 @@
CODE_SIGN_ENTITLEMENTS = ProductApp/ProductApp.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = B8MTNU3W9A;
ENABLE_BITCODE = NO;
@ -3728,9 +3799,10 @@
);
INFOPLIST_FILE = ProductApp/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "快存视频";
INFOPLIST_KEY_NSCameraUsageDescription = "掌上学课件学习和考试人脸识别需要使用相机";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "掌上学保存培训证书需要使用相册";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "保存相册";
INFOPLIST_KEY_NSCalendarsUsageDescription = "快存视频需要使用日历功能";
INFOPLIST_KEY_NSCameraUsageDescription = "快存视频图片处理和意见反馈需要使用相机拍摄照片";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "快存视频保存图片、处理图片和意见反馈需要使用相册";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "快存视频保存图片、处理图片和意见反馈需要使用相册";
INFOPLIST_KEY_NSUserTrackingUsageDescription = "快存视频用于向您推荐个性化广告";
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;

View File

@ -3,4 +3,22 @@
uuid = "6AEAF809-1B13-42F7-A877-B42EF509916A"
type = "0"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "7B13E51E-1DDF-43EE-B23C-699F8D33898F"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "ProductApp/ProductMain/&#x9996;&#x9875;/&#x89c6;&#x9891;&#x53f7;/ShiPingHaoViewController.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "177"
endingLineNumber = "177"
landmarkName = "-goAction"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

View File

@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "组 43049@2x(1).png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "组 43049@3x(1).png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "组 43049@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "组 43049@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "WeChat507f07f9029bcee7b50da5ed9e7a7497.jpg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,7 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
@ -11,10 +13,31 @@
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="RKX-RS-9uW">
<rect key="frame" x="156.66666666666666" y="209" width="80" height="80"/>
<constraints>
<constraint firstAttribute="width" constant="80" id="ghX-qd-5f1"/>
<constraint firstAttribute="height" constant="80" id="mpy-88-7eN"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="快存视频" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q6C-1t-vPY">
<rect key="frame" x="158" y="301" width="77" height="24"/>
<fontDescription key="fontDescription" type="system" pointSize="20"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" red="0.076813302929999994" green="0.076813302929999994" blue="0.076813302929999994" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="Q6C-1t-vPY" firstAttribute="top" secondItem="RKX-RS-9uW" secondAttribute="bottom" constant="12" id="94g-WT-nbK"/>
<constraint firstItem="RKX-RS-9uW" firstAttribute="centerX" secondItem="6Tk-OE-BBY" secondAttribute="centerX" id="c1l-rh-2Ob"/>
<constraint firstItem="RKX-RS-9uW" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="150" id="sxa-6h-id2"/>
<constraint firstItem="Q6C-1t-vPY" firstAttribute="centerX" secondItem="6Tk-OE-BBY" secondAttribute="centerX" id="w7R-ok-yDa"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>

View File

@ -157,7 +157,8 @@ typedef NS_ENUM(NSUInteger,WMControlType) {
*/
- (void)pause;
///跳转到指定时间
- (void)seekVideoToPos:(CGFloat)pos;
/**
@ -170,6 +171,9 @@ typedef NS_ENUM(NSUInteger,WMControlType) {
*/
- (void )resetWMPlayer;
///是否正在播放
-(BOOL)getPlayerState;
/**

View File

@ -690,6 +690,8 @@ static void *PlayViewStatusObservationContext = &PlayViewStatusObservationContex
}
//
-(void)play{
[self.imgvCenter setHidden:YES];
[self.imgvFirst setHidden:YES];
if (self.isInitPlayer == NO) {
[self creatWMPlayerAndReadyToPlay];
@ -713,6 +715,16 @@ static void *PlayViewStatusObservationContext = &PlayViewStatusObservationContex
self.playOrPauseBtn.selected = YES;
[self.imgvCenter setHidden:NO];
}
- (void)seekVideoToPos:(CGFloat)pos
{
CMTime time = CMTimeMakeWithSeconds(pos, self.player.currentTime.timescale);
[self.player seekToTime:time toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];
}
-(BOOL)getPlayerState
{
return !self.playOrPauseBtn.selected;
}
-(void)setPrefersStatusBarHidden:(BOOL)prefersStatusBarHidden{
_prefersStatusBarHidden = prefersStatusBarHidden;
}

View File

@ -15,6 +15,8 @@
</array>
</dict>
</array>
<key>GT_MinimumOSVersion</key>
<string>10</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>

View File

@ -6,6 +6,7 @@
//
#import "LoadAlterView.h"
#import <libpag/PAGView.h>
static LoadAlterView *viewAlter;
@interface LoadAlterView ()
@ -13,6 +14,9 @@ static LoadAlterView *viewAlter;
@property (nonatomic , strong) UIView *viewback;
///
@property (nonatomic , strong) UIImageView *imgvback;
///
@property (nonatomic , strong) PAGView *pagView;
///
@property (nonatomic , strong) UILabel *lbname;
@ -26,7 +30,14 @@ static LoadAlterView *viewAlter;
@end
@implementation LoadAlterView
-(void)removePag
{
if(self.pagView.isPlaying)
{
[self.pagView stop];
[self.pagView freeCache];
}
}
-(id)initWithFrame:(CGRect)frame
{
if(self = [super initWithFrame:frame])
@ -47,7 +58,7 @@ static LoadAlterView *viewAlter;
_viewback = viewback;
UIImageView *imgvback = [[UIImageView alloc] init];
[imgvback setImage:[UIImage imageNamed:@"loading"]];
// [imgvback setImage:[UIImage imageNamed:@"loading"]];
[viewback addSubview:imgvback];
[imgvback mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.equalTo(viewback.mas_width).multipliedBy(0.23);
@ -57,16 +68,29 @@ static LoadAlterView *viewAlter;
_imgvback = imgvback;
CABasicAnimation *animation;
animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0];
animation.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)*2]; //
animation.duration = 3.0; //
animation.repeatCount = HUGE_VALF; //
//
[imgvback.layer addAnimation:animation forKey:@"rotationAnimation"];
// CABasicAnimation *animation;
// animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
// animation.fromValue = [NSNumber numberWithFloat:0];
// animation.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)*2]; //
// animation.duration = 3.0; //
// animation.repeatCount = HUGE_VALF; //
// //
// [imgvback.layer addAnimation:animation forKey:@"rotationAnimation"];
NSString *strpath = [[NSBundle mainBundle] pathForResource:@"load_start" ofType:@"pag"];
PAGView *pagView = [[PAGView alloc] initWithFrame:CGRectMake(0, 0, 115, 115)];
[viewback addSubview:pagView];
[pagView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(115);
make.center.equalTo(viewback);
}];
PAGFile* pagFile = [PAGFile Load:strpath];
[pagView setComposition:pagFile];
[pagView setRepeatCount:0];
[pagView play];
_pagView = pagView;
UILabel *lbname = [[UILabel alloc] init];
@ -114,8 +138,8 @@ static LoadAlterView *viewAlter;
{
dispatch_async(dispatch_get_main_queue(), ^{
if(viewAlter){
[viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removePag];
// [viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removeFromSuperview];
viewAlter = nil;
}
@ -130,7 +154,8 @@ static LoadAlterView *viewAlter;
[viewAlter.timer invalidate];
viewAlter.timer = nil;
}
[viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removePag];
// [viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removeFromSuperview];
viewAlter = nil;
}
@ -144,7 +169,8 @@ static LoadAlterView *viewAlter;
{
if(viewAlter)
{
[viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removePag];
// [viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removeFromSuperview];
viewAlter = nil;
}
@ -167,7 +193,8 @@ static LoadAlterView *viewAlter;
dispatch_async(dispatch_get_main_queue(), ^{
if(viewAlter){
[viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removePag];
// [viewAlter.imgvback.layer removeAnimationForKey:@"rotationAnimation"];
[viewAlter removeFromSuperview];
viewAlter = nil;
}

View File

@ -88,7 +88,7 @@ static XiaZaiAlter *viewShow;
make.centerX.equalTo(viewback);
}];
NSString *strpath = [[NSBundle mainBundle] pathForResource:@"download_progress2" ofType:@"pag"];
NSString *strpath = [[NSBundle mainBundle] pathForResource:@"download_progress" ofType:@"pag"];
PAGView *pagView = [[PAGView alloc] initWithFrame:CGRectMake(0, 0, 136, 136)];
[imgvback addSubview:pagView];
[pagView mas_makeConstraints:^(MASConstraintMaker *make) {

View File

@ -9,14 +9,27 @@
#import "ZhuanShiAlterViewTableViewCell.h"
#import "AppDelegate.h"
#import "UIAlertController+Blocks.h"
#import "PayManager.h"
@interface ZhuanShiAlterView ()<UITableViewDelegate,UITableViewDataSource>
@interface ZhuanShiAlterView ()<UITableViewDelegate,UITableViewDataSource,PayManagerDelegate>
///
@property (nonatomic , strong) UIView *viewback;
///
@property (nonatomic , strong) UITableView *tableView ;
///
@property (nonatomic , strong) NSMutableArray *arrdata;
///
@property (nonatomic , strong) PayManager *manager;
///
@property (nonatomic , strong) OrderGoodsModelData *modelSelect;
///
@property (nonatomic , strong) NSString *strpaytype;
///
@property (nonatomic , strong) NSString *source;
@end
@implementation ZhuanShiAlterView
@ -48,7 +61,7 @@
}];
UIButton *btdel = [[UIButton alloc] init];
[btdel setImage:[UIImage imageNamed:@"kt_X"] forState:UIControlStateNormal];
[btdel setImage:[UIImage imageNamed:@"alter_X"] forState:UIControlStateNormal];
[viewback addSubview:btdel];
[btdel mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(viewback).offset(-15);
@ -114,19 +127,86 @@
-(void)payAction
{
[UIAlertController showActionSheetInViewController:self.viewController withTitle:@"支付方式" message:nil cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@[@"微信",@"苹果"] popoverPresentationControllerBlock:^(UIPopoverPresentationController * _Nonnull popover) {
} tapBlock:^(UIAlertController * _Nonnull controller, UIAlertAction * _Nonnull action, NSInteger buttonIndex) {
if(buttonIndex==2)
self.source = @"material_extract_dialog";
if([UserInfoModel shareModel].vip.intValue!=2&&[UserInfoModel shareModel].vip.intValue!=3)
{
[HXHud showMessage:@"请开通会员后再购买钻石" afterDelayType:0];
return;
}
OrderGoodsModelData *modelSelect;
for(OrderGoodsModelData *model in self.arrdata)
{
if(model.select==YES)
{
modelSelect = model;
break;
}
else if (buttonIndex==3)
{
}
if(modelSelect==NO)
{
[HXHud showMessage:@"请选择商品" afterDelayType:0];
return;
}
self.modelSelect = modelSelect;
}
}];
if([UserInfoModel getSyetemPay])
{
[UIAlertController showActionSheetInViewController:[UIApplication sharedApplication].delegate.window.rootViewController withTitle:@"支付方式" message:nil cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@[@"微信",@"苹果"] popoverPresentationControllerBlock:^(UIPopoverPresentationController * _Nonnull popover) {
} tapBlock:^(UIAlertController * _Nonnull controller, UIAlertAction * _Nonnull action, NSInteger buttonIndex) {
if(buttonIndex==2)
{
[self gopay:@"weixin"];
}
else if (buttonIndex==3)
{
[self gopay:@"apple"];
}
}];
}
else
{
[self gopay:@"apple"];
}
}
-(void)gopay:(NSString *)strvalue
{
self.strpaytype = strvalue;
[LoadAlterView showView];
NSString *strtempcence = self.source;
if([Tools isStringnil:strtempcence].length == 0)
{
strtempcence = @"center";
}
[self.manager creatOrderGoodsid:self.modelSelect.goods_id pay_type:strvalue source:strtempcence extra:@{} applegoodsid:self.modelSelect.apple_goods_id applegoodsNumber:1 ishuifu:NO coupon:@""];
}
#pragma mark - Apple
///
-(void)goodsPrice:(NSArray *)product
{
}
-(void)paySuccess
{
NSString *strvalue = self.strpaytype;
NSString *strtempcence = self.source;
if([Tools isStringnil:strtempcence].length == 0)
{
strtempcence = @"center";
}
[UserInfoModel shijianShangBao:0 key:@"client.pay.success" value:[NSString stringWithFormat:@"%@:%@",strvalue,strtempcence] extra:self.modelSelect.goods_id];
}
-(void)payCancle
{
}
-(void)payFaile
{
}
#pragma mark - UITableView
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
@ -146,6 +226,7 @@
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
[cell setBackgroundColor:[UIColor clearColor]];
}
cell.model = self.arrdata[indexPath.section];
return cell;
}
@ -171,12 +252,25 @@
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
for(OrderGoodsModelData *model in self.arrdata)
{
model.select = NO;
}
OrderGoodsModelData *model = self.arrdata[indexPath.section];
model.select = YES;
[self.tableView reloadData];
}
-(void)setArrdata:(NSMutableArray *)arrdata
{
_arrdata = arrdata;
if(arrdata.count>0)
{
OrderGoodsModelData *model = self.arrdata.firstObject;
model.select = YES;
}
[self.tableView reloadData];
}

View File

@ -6,11 +6,12 @@
//
#import <UIKit/UIKit.h>
#import "OrderGoodsModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface ZhuanShiAlterViewTableViewCell : UITableViewCell
///
@property (nonatomic , strong) OrderGoodsModelData *model;
@end
NS_ASSUME_NONNULL_END

View File

@ -134,4 +134,39 @@
}
return self;
}
-(void)setModel:(OrderGoodsModelData *)model
{
_model = model;
[self.lbgesu setText:[NSString stringWithFormat:@"%@个",model.value]];
self.lbgesu.attributedText = [Tools arrstring:self.lbgesu.text andstart:(int)self.lbgesu.text.length-1 andend:1 andfont:[UIFont systemFontOfSize:12] andcolor:RGBCOLOR(26, 26, 26)];
[self.lbjiage setText:[NSString stringWithFormat:@"¥%@",model.price]];
self.lbjiage.attributedText = [Tools arrstring:self.lbjiage.text andstart:0 andend:1 andfont:[UIFont systemFontOfSize:13] andcolor:RGBCOLOR(255, 69, 41)];
[self.lbinfo setText:[NSString stringWithFormat:@"%.4lf一个钻石巨优惠",model.price.floatValue/model.value.floatValue]];
if([Tools isStringnil:model.tips].length>0)
{
[self.viewinfo setHidden:NO];
}
else
{
[self.viewinfo setHidden:YES];
}
if(model.select)
{
[self.viewback.layer setBorderColor:RGBCOLOR(252, 79, 84).CGColor];
[self.imgvselect setHidden:NO];
}
else
{
[self.viewback.layer setBorderColor:RGBCOLOR(34, 34, 34).CGColor];
[self.imgvselect setHidden:YES];
}
}
@end

View File

@ -46,6 +46,7 @@
[UserInfoModel setTemp:responseObject.data.temp];
[UserInfoModel shareModel].vip = responseObject.data.vip;
[UserInfoModel shareModel].balance = responseObject.data.balance;
[UserInfoModel setUserid:responseObject.data.user_id];
self.viewShow.modelDetail = responseObject.data;
}
}];

View File

@ -246,13 +246,16 @@
{
if([UserInfoModel pushLoinVC:self.viewController ispush:YES]==NO)return;;
HuiYuanZXViewController *vc = [HuiYuanZXViewController new];
vc.source = @"center";
[self.viewController.navigationController pushViewController:vc animated:YES];
}
-(void)dengluAction
{
if([UserInfoModel shareModel].temp.intValue==0)return;
LoginViewController *vc = [LoginViewController new];
[self.viewController.navigationController pushViewController:vc animated:YES];
if([UserInfoModel shareModel].temp.intValue==1)
{
LoginViewController *vc = [LoginViewController new];
[self.viewController.navigationController pushViewController:vc animated:YES];
}
}
#pragma mark - UITableView
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
@ -301,6 +304,7 @@
{
if([UserInfoModel pushLoinVC:self.viewController ispush:YES]==NO)return;;
DuiHuanZSViewController *vc = [DuiHuanZSViewController new];
vc.source = @"center";
[self.viewController.navigationController pushViewController:vc animated:YES];
}
else if([str isEqualToString:@"分享APP"])

View File

@ -198,10 +198,6 @@
-(void)payAction
{
if([self.viewgoods getXieYi]==NO)
{
}
NSString *strc = [[UserInfoModel shareModel].config objectForKey:@"client.agreement.dialog"];
if((strc.intValue == 1 || [Tools isStringnil:strc].length==0) && [self.viewgoods getXieYi]==NO)
{

View File

@ -10,7 +10,8 @@
NS_ASSUME_NONNULL_BEGIN
@interface DuiHuanZSViewController : BaseViewController
///
@property (nonatomic , strong) NSString *source;
@end
NS_ASSUME_NONNULL_END

View File

@ -8,8 +8,12 @@
#import "DuiHuanZSViewController.h"
#import "DuiHuanZSView.h"
#import "DuiHuanZSGZSMView.h"
#import "PublicNetWorkManager.h"
#import "NetWorkManager.h"
@interface DuiHuanZSViewController ()
///
@property (nonatomic , strong) DuiHuanZSView *viewShow;
@end
@ -41,6 +45,58 @@
make.edges.equalTo(self.view);
}];
[self.view sendSubviewToBack:view];
view.source = self.source;
_viewShow = view;
[self getdata];
}
-(void)getdata
{
///
[PublicNetWorkManager requestUserData:self.view Callback:^(BOOL state, UserModel *responseObject, NSString * _Nullable describle) {
if(state)
{
self.viewShow.modelUser = responseObject.data;
}
}];
///
[LoadAlterView showView];
[PublicNetWorkManager requestOrderGoodsData:self.view type:@"recharge" Callback:^(BOOL state, OrderGoodsModel *responseObject, NSString * _Nullable describle) {
[LoadAlterView dismis];
if(state)
{
NSMutableArray *arrtemp = [NSMutableArray new];
if([UserInfoModel PayWXQuanXian]==YES)
{
[arrtemp addObjectsFromArray:responseObject.data];
}
else
{
for(OrderGoodsModelData *model in responseObject.data)
{
if([Tools isStringnil:model.apple_buy_id].length>0)
{
[arrtemp addObject:model];
}
}
}
self.viewShow.arrGoods = arrtemp;
}
else
{
[HXHud showMessage:responseObject.message afterDelayType:1];
}
}];
///
[NetWorkManager requestUserMasonryData:self.view Callback:^(BOOL state, UserMasonryModel *responseObject, NSString * _Nullable describle) {
if(state)
{
self.viewShow.modelZS = responseObject.data;
}
}];
}

View File

@ -6,11 +6,12 @@
//
#import <UIKit/UIKit.h>
#import "OrderGoodsModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface DuiHuanZSLineTableViewCell : UITableViewCell
///
@property (nonatomic , strong) OrderGoodsModelData *model;
@end
NS_ASSUME_NONNULL_END

View File

@ -15,6 +15,8 @@
@property (nonatomic , strong) UILabel *lbjiage;
///
@property (nonatomic , strong) UIView *viewinfo ;
///
@property (nonatomic , strong) UIView *viewback;
@end
@implementation DuiHuanZSLineTableViewCell
@ -33,6 +35,7 @@
[viewback.layer setCornerRadius:10];
[viewback.layer setBorderWidth:1];
[viewback.layer setBorderColor:RGBCOLOR(221, 221, 221).CGColor];
_viewback = viewback;
UIImageView *imgvback = [[UIImageView alloc] init];
[imgvback setImage:[UIImage imageNamed:@"zs_zs"]];
@ -122,4 +125,37 @@
return self;
}
-(void)setModel:(OrderGoodsModelData *)model
{
_model = model;
[self.lbnumber setText:[NSString stringWithFormat:@"%@个",model.value]];
self.lbnumber.attributedText = [Tools arrstring:self.lbnumber.text andstart:(int)self.lbnumber.text.length-1 andend:1 andfont:[UIFont systemFontOfSize:12] andcolor:RGBCOLOR(26, 26, 26)];
[self.lbjiage setText:[NSString stringWithFormat:@"¥%@",model.price]];
self.lbjiage.attributedText = [Tools arrstring:self.lbjiage.text andstart:0 andend:1 andfont:[UIFont systemFontOfSize:13] andcolor:RGBCOLOR(255, 69, 41)];
[self.lbinfo setText:[NSString stringWithFormat:@"%.4lf一个钻石巨优惠",model.price.floatValue/model.value.floatValue]];
if([Tools isStringnil:model.tips].length>0)
{
[self.viewinfo setHidden:NO];
}
else
{
[self.viewinfo setHidden:YES];
}
if(model.select)
{
[self.viewback.layer setBorderColor:RGBCOLOR(255, 140, 27).CGColor];
[self.viewback setBackgroundColor:RGBCOLOR(255, 250, 239)];
}
else
{
[self.viewback.layer setBorderColor:RGBCOLOR(221, 221, 221).CGColor];
[self.viewback setBackgroundColor:[UIColor whiteColor]];
}
}
@end

View File

@ -6,11 +6,20 @@
//
#import <UIKit/UIKit.h>
#import "UserModel.h"
#import "UserMasonryModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface DuiHuanZSView : UIView
///
@property (nonatomic , strong) UserModelData *modelUser;
@property (nonatomic , strong) UserMasonryModelData *modelZS;
///
@property (nonatomic , strong) NSArray *arrGoods;
///
@property (nonatomic , strong) NSString *source;
@end
NS_ASSUME_NONNULL_END

View File

@ -10,11 +10,24 @@
#import "DuiHuanZSLineTableViewCell.h"
#import "UIAlertController+Blocks.h"
@interface DuiHuanZSView ()<UITableViewDelegate,UITableViewDataSource>
#import "PayManager.h"
@interface DuiHuanZSView ()<UITableViewDelegate,UITableViewDataSource,PayManagerDelegate>
///
@property (nonatomic , strong) UITableView *tableView;
///
@property (nonatomic , strong) UIImageView *imgvHD;
@property (nonatomic , strong) UILabel *lbsy ;
///
@property (nonatomic , strong) DuiHuanZSLineView *viewline;
@property (nonatomic , strong) DuiHuanZSLineView *viewlineDH;
///
@property (nonatomic , strong) PayManager *manager;
///
@property (nonatomic , strong) OrderGoodsModelData *modelSelect;
///
@property (nonatomic , strong) NSString *strpaytype;
@end
@implementation DuiHuanZSView
@ -152,6 +165,7 @@
viewline.subTitle = @"每月重置";
viewline.number = @"500";
viewline.number1 = @"0";
_viewline = viewline;
DuiHuanZSLineView *viewlineDH = [DuiHuanZSLineView new];
[viewback addSubview:viewlineDH];
@ -163,7 +177,7 @@
viewlineDH.subTitle = @"用完即止";
viewlineDH.number = @"0";
viewlineDH.number1 = @"0";
_viewlineDH = viewlineDH;
}
-(void)drawUserView:(UIView *)view
@ -180,6 +194,7 @@
}];
[imgvHD.layer setMasksToBounds:YES];
[imgvHD.layer setCornerRadius:23];
_imgvHD = imgvHD;
UIView *viewhy = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 61, 22)];
[viewhy setBackgroundColor:[UIColor whiteColor]];
@ -202,9 +217,21 @@
[lbhyname mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(viewhy);
}];
if([UserInfoModel shareModel].vip.intValue==2)
{
[lbhyname setText:@"普通会员"];
}
else if([UserInfoModel shareModel].vip.intValue==3)
{
[lbhyname setText:@"终身会员"];
}
else
{
[viewhy setHidden:YES];
}
UILabel *lbname = [[UILabel alloc] init];
[lbname setText:@"xxx"];
[lbname setText:[UserInfoModel shareModel].name];
[lbname setTextColor:RGBCOLOR(255, 244, 208)];
[lbname setTextAlignment:NSTextAlignmentLeft];
[lbname setFont:[UIFont systemFontOfSize:15]];
@ -216,7 +243,7 @@
}];
UILabel *lbID = [[UILabel alloc] init];
[lbID setText:@"ID:74945"];
[lbID setText:[NSString stringWithFormat:@"ID:%@",[UserInfoModel shareModel].userid]];
[lbID setTextColor:RGBCOLOR(255, 244, 208)];
[lbID setTextAlignment:NSTextAlignmentLeft];
[lbID setFont:[UIFont systemFontOfSize:12]];
@ -237,7 +264,8 @@
make.right.equalTo(view).offset(-12);
make.top.offset(60);
}];
lbsy.attributedText = [Tools arrstring:lbsy.text andstart:6 andend:1 andfont:[UIFont fontWithName:@"D-DIN-PRO-Medium" size:22] andcolor:RGBCOLOR(255, 244, 208)];
_lbsy = lbsy;
UIImageView *imgvbottom = [[UIImageView alloc] init];
[imgvbottom setImage:[UIImage imageNamed:@"zs_user_bottom"]];
@ -252,25 +280,125 @@
[imgvbottom setClipsToBounds:YES];
}
-(void)setModelUser:(UserModelData *)modelUser
{
_modelUser = modelUser;
[self.imgvHD sd_setImageWithURL:[NSURL URLWithString:modelUser.avater] placeholderImage:[UIImage imageNamed:@"zs_head"]];
}
-(void)setModelZS:(UserMasonryModelData *)modelZS
{
_modelZS = modelZS;
[self.lbsy setText:[NSString stringWithFormat:@"剩余总次数 %d 次",modelZS.buy_total.intValue-modelZS.buy_used.intValue+modelZS.month_total.intValue-modelZS.month_used.intValue]];
self.lbsy.attributedText = [Tools arrstring:self.lbsy.text andstart:6 andend:(int)self.lbsy.text.length-8 andfont:[UIFont fontWithName:@"D-DIN-PRO-Medium" size:22] andcolor:RGBCOLOR(255, 244, 208)];
self.viewline.number = [Tools isStringnil:modelZS.month_total];
self.viewline.number1 = [Tools isStringnil:modelZS.month_used];
self.viewlineDH.number = [Tools isStringnil:modelZS.buy_total];
self.viewlineDH.number1 = [Tools isStringnil:modelZS.buy_used];
}
-(void)setArrGoods:(NSArray *)arrGoods
{
_arrGoods = arrGoods;
if(arrGoods.count>0)
{
OrderGoodsModelData *model = self.arrGoods.firstObject;
model.select = YES;
}
[self.tableView mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.offset(98*self.arrGoods.count);
}];
[self.tableView reloadData];
}
-(void)zhifuAction
{
[UIAlertController showActionSheetInViewController:self.viewController withTitle:@"支付方式" message:nil cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@[@"微信",@"苹果"] popoverPresentationControllerBlock:^(UIPopoverPresentationController * _Nonnull popover) {
} tapBlock:^(UIAlertController * _Nonnull controller, UIAlertAction * _Nonnull action, NSInteger buttonIndex) {
if(buttonIndex==2)
if([UserInfoModel shareModel].vip.intValue!=2&&[UserInfoModel shareModel].vip.intValue!=3)
{
[HXHud showMessage:@"请开通会员后再购买钻石" afterDelayType:0];
return;
}
OrderGoodsModelData *modelSelect;
for(OrderGoodsModelData *model in self.arrGoods)
{
if(model.select==YES)
{
modelSelect = model;
break;
}
else if (buttonIndex==3)
{
}
if(modelSelect==NO)
{
[HXHud showMessage:@"请选择商品" afterDelayType:0];
return;
}
self.modelSelect = modelSelect;
}
}];
if([UserInfoModel getSyetemPay])
{
[UIAlertController showActionSheetInViewController:self.viewController withTitle:@"支付方式" message:nil cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@[@"微信",@"苹果"] popoverPresentationControllerBlock:^(UIPopoverPresentationController * _Nonnull popover) {
} tapBlock:^(UIAlertController * _Nonnull controller, UIAlertAction * _Nonnull action, NSInteger buttonIndex) {
if(buttonIndex==2)
{
[self gopay:@"weixin"];
}
else if (buttonIndex==3)
{
[self gopay:@"apple"];
}
}];
}
else
{
[self gopay:@"apple"];
}
}
-(void)gopay:(NSString *)strvalue
{
self.strpaytype = strvalue;
[LoadAlterView showView];
NSString *strtempcence = self.source;
if([Tools isStringnil:strtempcence].length == 0)
{
strtempcence = @"center";
}
[self.manager creatOrderGoodsid:self.modelSelect.goods_id pay_type:strvalue source:strtempcence extra:@{} applegoodsid:self.modelSelect.apple_goods_id applegoodsNumber:1 ishuifu:NO coupon:@""];
}
#pragma mark - Apple
///
-(void)goodsPrice:(NSArray *)product
{
}
-(void)paySuccess
{
NSString *strvalue = self.strpaytype;
NSString *strtempcence = self.source;
if([Tools isStringnil:strtempcence].length == 0)
{
strtempcence = @"center";
}
[UserInfoModel shijianShangBao:0 key:@"client.pay.success" value:[NSString stringWithFormat:@"%@:%@",strvalue,strtempcence] extra:self.modelSelect.goods_id];
}
-(void)payCancle
{
}
-(void)payFaile
{
}
#pragma mark - UITableView
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 10;
return self.arrGoods.count;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
@ -286,6 +414,7 @@
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
[cell setBackgroundColor:[UIColor clearColor]];
}
cell.model = self.arrGoods[indexPath.section];
return cell;
}
@ -311,7 +440,25 @@
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
for(OrderGoodsModelData *model in self.arrGoods)
{
model.select = NO;
}
OrderGoodsModelData *model = self.arrGoods[indexPath.section];
model.select = YES;
[self.tableView reloadData];
}
-(PayManager *)manager
{
if(!_manager)
{
PayManager *manager = [PayManager sharedInstance];
[manager setDelegate:self];
_manager = manager;
}
return _manager;
}
@end

View File

@ -9,6 +9,9 @@
#import "ZhangHuGuanLiTableViewCell.h"
#import "PublicNetWorkManager.h"
#import "NomoAlterView.h"
@interface ZhangHuGuanLiViewController ()<UITableViewDelegate,UITableViewDataSource>
@ -47,6 +50,8 @@
}];
_tableView = tableView;
[self getdata];
}
-(void)getdata
{
@ -55,7 +60,23 @@
[LoadAlterView dismis];
if(state)
{
self.arrdata = responseObject.data;
self.arrdata = [NSMutableArray new];
NSMutableArray *arrnow = [NSMutableArray new];
NSMutableArray *arrother = [NSMutableArray new];
for(UserAccountModelData *model in responseObject.data)
{
if([model.user_id isEqualToString:[UserInfoModel shareModel].userid])
{
[arrnow addObject:model];
}
else
{
[arrother addObject:model];
}
}
[self.arrdata addObject:arrnow];
[self.arrdata addObject:arrother];
[self.tableView reloadData];
}
else
{
@ -67,11 +88,12 @@
#pragma mark - UITableView
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
return self.arrdata.count;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 1;
NSArray *arrtemp = self.arrdata[section];
return arrtemp.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
@ -83,7 +105,8 @@
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
[cell setBackgroundColor:[UIColor clearColor]];
}
// cell.model = self.arrdata[indexPath.row];
NSArray *arrtemp = self.arrdata[indexPath.section];
cell.model = arrtemp[indexPath.row];
return cell;
}
@ -97,7 +120,16 @@
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 128+10;
NSArray *arrtemp = self.arrdata[indexPath.section];
UserAccountModelData *model = arrtemp[indexPath.row];
if(model.temp.intValue==1)
{
return 80+10;
}
else
{
return 128+10;
}
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
@ -126,7 +158,67 @@
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
__block UserAccountModelData *model = self.arrdata[indexPath.section];
if([model.temp intValue] != 1)
{
if(![model.user_id isEqualToString:[UserInfoModel shareModel].userid])
{///
[NomoAlterView showInfo:@"是否切换登录账号?" SelectTag:^(NSInteger tag) {
if(tag == 1)
{
dispatch_async(dispatch_get_main_queue(), ^{
[LoadAlterView showView];
NSDictionary *dic = @{@"user_id":[Tools isStringnil:model.user_id]};
[PublicNetWorkManager requestUserLoginData:self.view login_type:@"device" phone:@{} weixin:@{} apple:@{} device:dic onekey:@{} bind:[NSNumber numberWithBool:NO] unbind:[NSNumber numberWithBool:NO] Callback:^(BOOL state, UserLoginModel *responseObject, NSString * _Nullable describle) {
if(state)
{
[UserInfoModel shijianShangBao:0 key:@"client.switch.account" value:@"切换账户" extra:@""];
[UserInfoModel setLoingState:@"1"];
[UserInfoModel setToken:responseObject.data.token];
[self getPeiZhiData];
}
else
{
[LoadAlterView dismis];
[HXHud showMessage:responseObject.message afterDelayType:1];
}
}];
});
}
}];
}
}
}
-(void)getPeiZhiData
{
NSString *stridfa = [[NSUserDefaults standardUserDefaults] objectForKey:UserIDFA];
[PublicNetWorkManager requestUserConfigData:self.view idfa:stridfa Callback:^(BOOL state, UserConfigModel *responseObject, NSString * _Nullable describle) {
[LoadAlterView dismis];
if(state)
{
[UserInfoModel setToken:responseObject.data.token];
[UserInfoModel setLoingState:@"1"];
[UserInfoModel setUserid:responseObject.data.user_id];
[UserInfoModel setAppid:responseObject.data.app_id];
[UserInfoModel setRole:responseObject.data.role];
[UserInfoModel setTemp:responseObject.data.temp];
[UserInfoModel setName:responseObject.data.name];
[UserInfoModel setConfig:responseObject.data.config];
[UserInfoModel shareModel].isloadconfig = YES;
[self.navigationController popViewControllerAnimated:YES];
}
else
{
[HXHud showMessage:responseObject.message afterDelayType:1];
}
}];
}

View File

@ -6,11 +6,12 @@
//
#import <UIKit/UIKit.h>
#import "UserAccountModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface ZhangHuGuanLiTableViewCell : UITableViewCell
///
@property (nonatomic , strong) UserAccountModelData *model;
@end
NS_ASSUME_NONNULL_END

View File

@ -24,6 +24,9 @@
@property (nonatomic , strong) NSMutableArray *arrimgvType;
@property (nonatomic , strong) UILabel *lbphone ;
///
@property (nonatomic , strong) UIView *viewline;
@end
@implementation ZhangHuGuanLiTableViewCell
@ -115,6 +118,7 @@
make.right.equalTo(viewback).offset(-16);
make.centerY.equalTo(lbID);
}];
_lbtime = lbtime;
UIView *viewline = [[UIView alloc] init];
[viewline setBackgroundColor:RGBACOLOR(255, 255, 255, 0.1)];
@ -125,6 +129,7 @@
make.top.equalTo(imgvhead.mas_bottom).offset(18);
make.height.offset(1);
}];
_viewline = viewline;
UILabel *lbzhtype = [[UILabel alloc] init];
[lbzhtype setText:@"账户绑定:"];
@ -169,4 +174,86 @@
return self;
}
-(void)setModel:(UserAccountModelData *)model
{
_model = model;
[self.imgvhead sd_setImageWithURL:[NSURL URLWithString:[Tools isStringnil:model.avater]] placeholderImage:[UIImage imageNamed:@"zh_head"]];
self.lbname.text = [Tools isStringnilkong:model.name];
self.lbhuiyuan.text = [Tools isStringnilkong:model.vip_name];
self.lbID.text = [NSString stringWithFormat:@"ID%@",[Tools isStringnil:model.user_id]];
self.lbtime.text = [NSString stringWithFormat:@"%@ 注册",[Tools isStringnilkong:model.create_time]];
[self.lbphone setHidden:YES];
///
if([model.bind isKindOfClass:[NSArray class]])
{
for(int i = 0 ; i < self.arrimgvType.count; i++)
{
UIImageView *imgv = self.arrimgvType[i];
if(i<model.bind.count)
{
[imgv setHidden:NO];
NSString *strtemp = model.bind[i];
if([strtemp isEqualToString:@"weixin"])
{
imgv.image = [UIImage imageNamed:@"my_bd_微信绑定"];
}
else if([strtemp isEqualToString:@"phone"])
{
[self.lbphone setHidden:NO];
imgv.image = [UIImage imageNamed:@"my_bd_手机绑定"];
self.lbphone.text = [self backPhoneShow:model.phone];
}
else
{
imgv.image = [UIImage imageNamed:@"my_bd_Apple绑定"];
}
}
else
{
[imgv setHidden:YES];
}
}
}
else
{
for(UIImageView *imgv in self.arrimgvType)
{
[imgv setHidden:YES];
}
}
if(model.temp.intValue==1)
{
[self.viewline setHidden:YES];
[self.lbzhtype setHidden:YES];
[self.lbphone setHidden:YES];
}
else
{
[self.viewline setHidden:NO];
[self.lbzhtype setHidden:NO];
[self.lbphone setHidden:NO];
}
}
-(NSString *)backPhoneShow:(NSString *)str
{
NSString *strback = @"";
if(str.length==11)
{
strback = [str stringByReplacingCharactersInRange:NSMakeRange(3, 4) withString:@"****"];
}
else
{
strback = [Tools isStringnil:str];
}
return strback;
}
@end

View File

@ -42,6 +42,7 @@
[self showNaviGationView:YES];
[self.navigationView setBackgroundColor:RGBCOLOR(20, 20, 20)];
[self.navigationView setTitle:@"我的记录" titleColor:RGBACOLOR(255, 255, 255, 1)];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(topSelectNotifi:) name:@"recordShowSonView" object:nil];
JiLuHeaderView *viewtop = [[JiLuHeaderView alloc] init];
[viewtop setBackgroundColor:RGBCOLOR(20, 20, 20)];
@ -121,5 +122,9 @@
[self.viewAudeo refData];
}
-(void)topSelectNotifi:(NSNotification *)notifi
{
[self.viewtop setSelectBtTag:[notifi.object integerValue]];
}
@end

View File

@ -40,20 +40,6 @@
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//
// [CopyAlterView showTitle:@"您已复制链接,是否粘贴" info:@"https://twitter.com/Crazycc22hh/status/1811582431427985931?s=19" back:^(NSInteger selectTag) {
// if(selectTag==1)
// {
//
// }
// else
// {
//
// }
// }];
// });
}
- (void)viewDidLoad {
[super viewDidLoad];

View File

@ -28,6 +28,8 @@
@property (nonatomic, strong) WYCamaImageTools *tools;
@property (nonatomic , assign) int typefunction;
@end
@implementation ShouYeView
@ -245,6 +247,7 @@
{
return;
}
if([UserInfoModel pushLoinVC:self.viewController ispush:YES]==NO)return;;
HuiYuanZXViewController *vc = [[HuiYuanZXViewController alloc] init];
vc.source = @"banner";
[self.viewController.navigationController pushViewController:vc animated:YES];
@ -282,7 +285,7 @@
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
///@"视频加水印",@"MD5去重",@"视频裁剪",@"视频转音频"
///[@"视频加水印",@"MD5去重",@"视频裁剪",@"视频转音频",@"去背景音乐",@"视频时长剪切" 1
baseInfoModel *model = self.arrdata[indexPath.row];
if([model.title isEqualToString:@"视频转音频"])
{
@ -291,6 +294,7 @@
}
else
{
self.typefunction = (int)indexPath.row+1;
self.tools.isvideo = YES;
[self.tools choosePicWithViewController:self.viewController chooseType:ChooseTypeAlbum];
}
@ -300,6 +304,7 @@
{
ShiPingEditHomeViewController *vc = [ShiPingEditHomeViewController new];
vc.urlvideo = videourl;
vc.type = self.typefunction;
[self.viewController.navigationController pushViewController:vc animated:YES];
}

View File

@ -10,6 +10,9 @@
NS_ASSUME_NONNULL_BEGIN
@interface ShiPingEditHomeViewController : BaseViewController
///1水印 2MD5 3裁剪 5去背景
//////[@"视频加水印",@"MD5去重",@"视频裁剪",@"视频转音频",@"去背景音乐",@"视频时长剪切"
@property (nonatomic , assign) int type;
///
@property (nonatomic , strong) NSURL *urlvideo;
@end

View File

@ -10,7 +10,8 @@
@interface ShiPingEditHomeViewController ()
///
@property (nonatomic , strong) ShiPingEditHomeView *viewShow;
@end
@implementation ShiPingEditHomeViewController
@ -24,14 +25,30 @@
[self.navigationView setBackgroundColor:RGBCOLOR(20, 20, 20)];
[self.navigationView setTitle:@"" titleColor:RGBACOLOR(255, 255, 255, 0.9)];
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
-(void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[self.viewShow stopPlayer];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self.view setBackgroundColor:RGBCOLOR(20, 20, 20)];
[self drawUI];
}
-(void)drawUI
{
// if(self.viewShow)
// {
// [self.viewShow removeFromSuperview];
// self.viewShow=nil;
// }
ShiPingEditHomeView *view = [[ShiPingEditHomeView alloc] init];
[self.view addSubview:view];
[view mas_makeConstraints:^(MASConstraintMaker *make) {
@ -39,8 +56,8 @@
make.top.offset(NavHeight);
}];
view.urlvideo = self.urlvideo;
view.type = self.type;
_viewShow = view;
}
@end

View File

@ -10,8 +10,11 @@
NS_ASSUME_NONNULL_BEGIN
@interface ShiPingEditHomeView : UIView
///1水印 2MD5 3裁剪 5去背景
@property (nonatomic , assign) int type;
///
@property (nonatomic , strong) NSURL *urlvideo;
-(void)stopPlayer;
@end
NS_ASSUME_NONNULL_END

View File

@ -10,13 +10,26 @@
#import "ShiPingEditBiaoJiView.h"
#import <YiVideoEditor-Swift.h>
#import "YiVideoEditor-umbrella.h"
#import "DynamicVideoViewController.h"
#import "ShiPingEditJGViewController.h"
#import "ShiPingEditShuiYinView.h"
@interface ShiPingEditHomeView ()<WMPlayerDelegate>
#import <CommonCrypto/CommonDigest.h>
//#import <ICGVideoTrimmerView.h>
#import "ShiPingEditShiChangView.h"
@interface ShiPingEditHomeView ()<WMPlayerDelegate,ShiPingEditShiChangViewDelegate>
@property (nonatomic , strong) WMPlayer *player;
///
@property (nonatomic , strong) ShiPingEditBiaoJiView *vieweditBack;
///
@property (nonatomic , strong) ShiPingEditShuiYinView *viewSY;
///
@property (nonatomic , strong) ShiPingEditShiChangView *viewJQ;
///
@property (nonatomic , assign) CGFloat start;
@property (nonatomic , assign) CGFloat end;
@end
@ -26,10 +39,22 @@
{
if(self = [super initWithFrame:frame])
{
UITapGestureRecognizer *tapview = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapcc)];
[self addGestureRecognizer:tapview];
}
return self;
}
-(void)tapcc
{
if([self.player getPlayerState])
{
[self.player pause];
}
else
{
[self.player play];
}
}
-(void)setUrlvideo:(NSURL *)urlvideo
{
_urlvideo = urlvideo;
@ -87,11 +112,87 @@
[btbottom1 addTarget:self action:@selector(bottomAction:) forControlEvents:UIControlEventTouchUpInside];
///
[self drawBJ];
}
}
-(void)setType:(int)type
{
_type = type;
///1 2MD5 3 5
if(type==1)
{
[self drawSY];
}
else if (type==3)
{
[self drawBJ];
}
else if (type==6)
{
[self drawJQ];
}
}
-(void)drawJQ
{
ShiPingEditShiChangView *viewJQ = [[ShiPingEditShiChangView alloc] initWithFrame:CGRectMake(16, UISCREEN_HEIGHT-150, UISCREEN_WIDTH-32, 40)];
[viewJQ setDelegate:self];
viewJQ.urlvideo = self.urlvideo;
[self addSubview:viewJQ];
_viewJQ = viewJQ;
[self.player pause];
}
-(void)drawSY
{
// if(self.viewSY)
// {
// [self.viewSY removeFromSuperview];
// }
ShiPingEditShuiYinView *viewSY = [[ShiPingEditShuiYinView alloc] init];
[viewSY setBackgroundColor:[UIColor clearColor]];
[self addSubview:viewSY];
[viewSY mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.player);
}];
viewSY.urlvideo = self.urlvideo;
_viewSY = viewSY;
UIButton *btwz = [[UIButton alloc] init];
[btwz setTitle:@"文字" forState:UIControlStateNormal];
[btwz setTitleColor:RGBACOLOR(255, 255, 255, 0.9) forState:UIControlStateNormal];
[btwz.titleLabel setFont:[UIFont systemFontOfSize:14]];
[btwz setImage:[UIImage imageNamed:@"imageedit_文字"] forState:UIControlStateNormal];
[self addSubview:btwz];
[btwz mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.offset(50);
make.height.offset(80);
make.top.equalTo(viewSY.mas_bottom).offset(20);
make.right.equalTo(self.mas_centerX).offset(-20);
}];
[btwz setTag:1];
[btwz setIconInTop];
[btwz addTarget:self action:@selector(shuiyinAcion:) forControlEvents:UIControlEventTouchUpInside];
UIButton *bttp = [[UIButton alloc] init];
[bttp setTitle:@"图片" forState:UIControlStateNormal];
[bttp setTitleColor:RGBACOLOR(255, 255, 255, 0.9) forState:UIControlStateNormal];
[bttp.titleLabel setFont:[UIFont systemFontOfSize:14]];
[bttp setImage:[UIImage imageNamed:@"imageedit_图片"] forState:UIControlStateNormal];
[self addSubview:bttp];
[bttp mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.top.equalTo(btwz);
make.left.equalTo(btwz.mas_right).offset(40);
}];
[bttp setTag:2];
[bttp setIconInTop];
[bttp addTarget:self action:@selector(shuiyinAcion:) forControlEvents:UIControlEventTouchUpInside];
}
-(void)drawBJ
{
if(self.vieweditBack)
{
[self.vieweditBack removeFromSuperview];
}
ShiPingEditBiaoJiView *vieweditBack = [[ShiPingEditBiaoJiView alloc] init];
[vieweditBack setBackgroundColor:[UIColor clearColor]];
[self addSubview:vieweditBack];
@ -113,50 +214,273 @@
}];
}
-(void)shuiyinAcion:(UIButton *)sender
{
[self.viewSY addType:(int)sender.tag];
}
-(void)stopPlayer
{
[self.player pause];
}
-(void)bottomAction:(UIButton *)sender
{
CGRect recttemp = [self.vieweditBack getRectEdit];
if(recttemp.size.width == 0.0)
if(sender.tag==0)
{
[HXHud showMessage:@"请选择裁剪区域" afterDelayType:0];
[self.viewController.navigationController popViewControllerAnimated:YES];
return;
}
YiVideoEditor *editor = [[YiVideoEditor alloc] initWithVideoURL:self.urlvideo];
///1 2MD5 3 5
if(self.type==1)
{
///
[editor cropWithCropFrame:recttemp];
CALayer *viewtempLayer = [self.viewSY getShowLayer];
///
[editor addLayerWithLayer:viewtempLayer];
NSString *strsavepath = [Tools audioRecordingPath:[NSString stringWithFormat:@"%@.mp4",[Tools getCurrentTime:@"yyyyMMddHHmmss"]]];
///
[LoadAlterView showView];
[editor exportWithExportURL:[NSURL fileURLWithPath:strsavepath] completion:^(AVAssetExportSession * _Nonnull session) {
if(session.status==AVAssetExportSessionStatusCompleted)
{
dispatch_async(dispatch_get_main_queue(), ^{
[LoadAlterView dismis];
[self.player pause];
ShiPingEditJGViewController *vc = [[ShiPingEditJGViewController alloc] init];
vc.urlvideo = [NSURL fileURLWithPath:strsavepath];
[self.viewController.navigationController pushViewController:vc animated:YES];
});
}
else if(session.status==AVAssetExportSessionStatusFailed)
{
dispatch_async(dispatch_get_main_queue(), ^{
[LoadAlterView dismis];
});
NSLog(@"error = %@",session.error);
}
}];
}
else if (self.type==2)
{
[LoadAlterView showView];
[self changeVideoMD5:self.urlvideo back:^(NSString *backVideo) {
dispatch_async(dispatch_get_main_queue(), ^{
[LoadAlterView dismis];
[self.player pause];
ShiPingEditJGViewController *vc = [[ShiPingEditJGViewController alloc] init];
vc.urlvideo = [NSURL fileURLWithPath:backVideo];
[self.viewController.navigationController pushViewController:vc animated:NO];
});
// editor
///
// [editor addLayerWithLayer:<#(CALayer * _Nonnull)#>]
///
// editor addAudioWithAsset:<#(AVAsset * _Nonnull)#> startingAt:<#(CGFloat)#> trackDuration:<#(CGFloat)#>
NSString *strsavepath = [Tools audioRecordingPath:[NSString stringWithFormat:@"%@.mp4",[Tools getCurrentTime:@"yyyyMMddHHmmss"]]];
///
[editor exportWithExportURL:[NSURL fileURLWithPath:strsavepath] completion:^(AVAssetExportSession * _Nonnull session) {
if(session.status==AVAssetExportSessionStatusCompleted)
}];
}
else if (self.type==3)
{
CGRect recttemp = [self.vieweditBack getRectEdit];
if(recttemp.size.width == 0.0)
{
[self.player pause];
DynamicVideoViewController *vc = [[DynamicVideoViewController alloc] init];
[vc setdataArray:[NSMutableArray arrayWithObject:[NSURL fileURLWithPath:strsavepath]] index:0];
[self.viewController.navigationController pushViewController:vc animated:NO];
[vc show];
[HXHud showMessage:@"请选择裁剪区域" afterDelayType:0];
return;
}
else if(session.status==AVAssetExportSessionStatusFailed)
{
NSLog(@"error = %@",session.error);
}
}];
///
[editor cropWithCropFrame:recttemp];
/*
MD5
*/
NSString *strsavepath = [Tools audioRecordingPath:[NSString stringWithFormat:@"%@.mp4",[Tools getCurrentTime:@"yyyyMMddHHmmss"]]];
///
[LoadAlterView showView];
[editor exportWithExportURL:[NSURL fileURLWithPath:strsavepath] completion:^(AVAssetExportSession * _Nonnull session) {
if(session.status==AVAssetExportSessionStatusCompleted)
{
dispatch_async(dispatch_get_main_queue(), ^{
[LoadAlterView dismis];
[self.player pause];
ShiPingEditJGViewController *vc = [[ShiPingEditJGViewController alloc] init];
vc.urlvideo = [NSURL fileURLWithPath:strsavepath];
[self.viewController.navigationController pushViewController:vc animated:NO];
});
}
else if(session.status==AVAssetExportSessionStatusFailed)
{
dispatch_async(dispatch_get_main_queue(), ^{
[LoadAlterView dismis];
});
NSLog(@"error = %@",session.error);
}
}];
}
else if (self.type==5)
{
[LoadAlterView showView];
[self removeAudioFromVideo:self.urlvideo back:^(NSString *backVideo) {
dispatch_async(dispatch_get_main_queue(), ^{
[LoadAlterView dismis];
[self.player pause];
ShiPingEditJGViewController *vc = [[ShiPingEditJGViewController alloc] init];
vc.urlvideo = [NSURL fileURLWithPath:backVideo];
[self.viewController.navigationController pushViewController:vc animated:NO];
});
}];
}
else if (self.type==6)
{
[LoadAlterView showView];
[self jianqieshichang:self.urlvideo back:^(NSString *backVideo) {
dispatch_async(dispatch_get_main_queue(), ^{
[LoadAlterView dismis];
[self.player pause];
ShiPingEditJGViewController *vc = [[ShiPingEditJGViewController alloc] init];
vc.urlvideo = [NSURL fileURLWithPath:backVideo];
[self.viewController.navigationController pushViewController:vc animated:NO];
});
}];
}
}
-(void)changeVideoMD5:(NSURL *)videoURL back:(void (^)(NSString *backVideo))blockValue
{
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:videoURL options:nil];
NSString *outputPath = [Tools audioRecordingPath:[NSString stringWithFormat:@"%@.mp4",[Tools getCurrentTime:@"yyyyMMddHHmmss"]]];
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];
exporter.outputFileType = AVFileTypeMPEG4; // AVFileTypeQuickTimeMovie, AVFileTypeMPEG4
exporter.outputURL = [NSURL fileURLWithPath:outputPath]; //
[exporter exportAsynchronouslyWithCompletionHandler:^{
switch (exporter.status) {
case AVAssetExportSessionStatusCompleted:
{
blockValue(outputPath);
}
break;
case AVAssetExportSessionStatusFailed:
{
blockValue(@"");
}
break;
default:
break;
}
}];
}
-(NSString *)getDataMD5:(NSURL *)url
{
NSData *videoData = [NSData dataWithContentsOfURL:url];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5(videoData.bytes, (CC_LONG)videoData.length, digest);
NSString *originalMD5 = [NSString stringWithFormat:
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
digest[0], digest[1], digest[2], digest[3],
digest[4], digest[5], digest[6], digest[7],
digest[8], digest[9], digest[10], digest[11],
digest[12], digest[13], digest[14], digest[15]];
return originalMD5;
}
///
- (void)removeAudioFromVideo:(NSURL *)videoURL back:(void (^)(NSString *backVideo))blockValue
{
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:videoURL options:nil];
NSMutableArray *videoTracks = [[NSMutableArray alloc] init];
//
for (AVAssetTrack *track in [asset tracksWithMediaType:AVMediaTypeVideo]) {
[videoTracks addObject:track];
}
if(videoTracks.count>0)
{
AVMutableComposition *composition = [AVMutableComposition composition];
AVMutableCompositionTrack *videoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
CMTime nextClipStartTime = kCMTimeZero;
AVAssetTrack *videoAssetTrack = videoTracks[0];
BOOL ok = [videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset.duration) ofTrack:videoAssetTrack atTime:nextClipStartTime error:nil];
if (ok) {
NSString *outputPath = [Tools audioRecordingPath:[NSString stringWithFormat:@"%@.mp4",[Tools getCurrentTime:@"yyyyMMddHHmmss"]]];
AVAssetExportSession *exportSessionnew = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetHighestQuality];
exportSessionnew.outputURL = [NSURL fileURLWithPath:outputPath];
exportSessionnew.outputFileType = AVFileTypeMPEG4;
exportSessionnew.shouldOptimizeForNetworkUse = YES;
[exportSessionnew exportAsynchronouslyWithCompletionHandler:^{
switch (exportSessionnew.status) {
case AVAssetExportSessionStatusCompleted:
blockValue(outputPath);
break;
case AVAssetExportSessionStatusFailed:
blockValue(@"");
break;
default:
break;
}
}];
}
else
{
blockValue(@"");
}
}
else
{
blockValue(@"");
}
}
-(void)timeChange:(CGFloat)start end:(CGFloat)end isstart:(BOOL)isstart
{
self.start = start;
self.end = end;
[self.player pause];
if(isstart)
{
[self.player seekVideoToPos:start];
}
else
{
[self.player seekVideoToPos:end];
}
}
-(void)jianqieshichang:(NSURL *)videourl back:(void (^)(NSString *backVideo))blockValue
{
// AVAsset
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:videourl options:nil];
// 510
CMTime startTime = CMTimeMakeWithSeconds(self.start, asset.duration.timescale);
CMTime endTime = CMTimeMakeWithSeconds(self.end, asset.duration.timescale);
CMTimeRange exportTimeRange = CMTimeRangeMake(startTime, CMTimeSubtract(endTime, startTime));
NSString *outputPath = [Tools audioRecordingPath:[NSString stringWithFormat:@"%@.mp4",[Tools getCurrentTime:@"yyyyMMddHHmmss"]]];
// AVAssetExportSession
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetMediumQuality];
exportSession.timeRange = exportTimeRange;
exportSession.outputURL = [NSURL fileURLWithPath:outputPath];
exportSession.outputFileType = AVFileTypeMPEG4; //
exportSession.shouldOptimizeForNetworkUse = YES; // 使
//
[exportSession exportAsynchronouslyWithCompletionHandler:^{
switch (exportSession.status) {
case AVAssetExportSessionStatusFailed: {
blockValue(@"");
break;
}
case AVAssetExportSessionStatusCompleted: {
//
blockValue(outputPath);
break;
}
default: {
break;
}
}
}];
}
@end

View File

@ -0,0 +1,21 @@
//
// ShiPingEditShuiYinView.h
// ProductApp
//
// Created by 工作 on 2025/4/9.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface ShiPingEditShuiYinView : UIView
///
@property (nonatomic , strong) NSURL *urlvideo;
///1文字 2图片
-(void)addType:(int)type;
-(void)setItemLayerHidden;
-(CALayer *)getShowLayer;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,343 @@
//
// ShiPingEditShuiYinView.m
// ProductApp
//
// Created by on 2025/4/9.
//
#import "ShiPingEditShuiYinView.h"
#import "UIImageView+VideoImageView.h"
#import "WYCamaImageTools.h"
@interface ShiPingEditShuiYinView ()<WYCamaImageToolsDelegate>
///
@property (nonatomic , strong) UIImage *imageEdit;
///
@property (nonatomic , strong) UIView *viewedit;
///
@property (nonatomic , strong) UIView *viewboy;
@property (nonatomic , assign) CGPoint transLast;
///
@property (nonatomic , strong) NSMutableArray *arrItems;
///
@property (nonatomic , strong) UIImageView *imgvNow;
@property (nonatomic, strong) WYCamaImageTools *tools;
@end
@implementation ShiPingEditShuiYinView
-(id)initWithFrame:(CGRect)frame
{
if(self = [super initWithFrame:frame])
{
[self setUserInteractionEnabled:YES];
}
return self;
}
-(void)setUrlvideo:(NSURL *)urlvideo
{
_urlvideo = urlvideo;
[UIImageView videoImageWithvideoURL:self.urlvideo atTime:0.1 back:^(UIImage * _Nonnull image) {
if(image)
{
self.imageEdit = image;
float f_w = UISCREEN_WIDTH;
float f_h = UISCREEN_HEIGHT-TabHeight-NavHeight-80;
if(f_w/f_h>image.size.width/image.size.height)
{
f_w = f_h*image.size.width/image.size.height;
}
else
{
f_h = f_w*image.size.height/image.size.width;
}
if(self.viewedit)
{
[self.viewedit mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(self);
make.width.offset(f_w);
make.height.offset(f_h);
}];
}
}
}];
}
-(UIView *)drawKuangView:(int)type
{
UIView *viewboy= [[UIView alloc] initWithFrame:CGRectMake(50, 50, 150, 50)];
[viewboy setBackgroundColor:[UIColor clearColor]];
[self.viewedit addSubview:viewboy];
[viewboy setClipsToBounds:NO];
[viewboy.layer setBorderWidth:1.5];
[viewboy.layer setBorderColor:[UIColor whiteColor].CGColor];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panMoveAction:)];
[viewboy addGestureRecognizer:pan];
if(type==1)
{
UITextField *field = [[UITextField alloc] init];
[field setTextColor:RGBACOLOR(255, 255, 255,0.9)];
[field setTextAlignment:NSTextAlignmentCenter];
[field setFont:[UIFont systemFontOfSize:15]];
[field setPlaceholder:@"请输入"];
[viewboy addSubview:field];
[field mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(viewboy);
}];
[field setTag:10];
}
else if(type==2)
{
UILabel *lbname = [[UILabel alloc] init];
[lbname setText:@"点击添加图片"];
[lbname setTextColor:RGBACOLOR(255, 255, 255,0.9)];
[lbname setTextAlignment:NSTextAlignmentCenter];
[lbname setFont:[UIFont systemFontOfSize:15]];
[viewboy addSubview:lbname];
[lbname mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(viewboy);
}];
UIImageView *imgvshow = [[UIImageView alloc] init];
[imgvshow setContentMode:UIViewContentModeScaleAspectFill];
[viewboy addSubview:imgvshow];
[imgvshow mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(viewboy);
}];
[imgvshow setClipsToBounds:YES];
[imgvshow setUserInteractionEnabled:YES];
[imgvshow setTag:10];
UIButton *btaddimg = [[UIButton alloc] init];
[imgvshow addSubview:btaddimg];
[btaddimg mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(imgvshow);
}];
[btaddimg addTarget:self action:@selector(addimgAction:) forControlEvents:UIControlEventTouchUpInside];
}
///
UIView *viewbit = [[UIView alloc] init];
[viewboy addSubview:viewbit];
[viewbit mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(60);
make.right.equalTo(viewboy).offset(30);
make.bottom.equalTo(viewboy).offset(30);
}];
[viewbit setTag:1];
UIImageView *imgvbig = [[UIImageView alloc] init];
[imgvbig setImage:[UIImage imageNamed:@"video_edit_big"]];
[imgvbig setUserInteractionEnabled:YES];
[viewbit addSubview:imgvbig];
[imgvbig mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(20);
make.center.equalTo(viewbit);
}];
[imgvbig setUserInteractionEnabled:YES];
UIPanGestureRecognizer *panBig = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panTwoGestureAction:)];
[viewbit addGestureRecognizer:panBig];
UIButton *btdel = [[UIButton alloc] init];
[btdel setImage:[UIImage imageNamed:@"video_edit_X"] forState:UIControlStateNormal];
[viewboy addSubview:btdel];
[btdel mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.offset(40);
make.left.equalTo(viewboy.mas_left).offset(-20);
make.top.equalTo(viewboy.mas_top).offset(-20);
}];
[btdel addTarget:self action:@selector(delAction:) forControlEvents:UIControlEventTouchUpInside];
[btdel setTag:2];
return viewboy;
}
-(void)addimgAction:(UIButton *)sender
{
self.imgvNow = (UIImageView *)sender.superview;
[self.tools choosePicWithViewController:self.viewController chooseType:ChooseTypeAlbum];
}
-(void)didEndChoosePic:(UIImage *)image
{
self.imgvNow.image = image;
}
///1 2
-(void)addType:(int)type
{
if(!self.viewedit)
{
UIView *viewedit = [[UIView alloc] init];
[self addSubview:viewedit];
[viewedit setUserInteractionEnabled:YES];
_viewedit = viewedit;
self.arrItems = [NSMutableArray new];
if(self.imageEdit)
{
float f_w = UISCREEN_WIDTH;
float f_h = UISCREEN_HEIGHT-TabHeight-NavHeight-80;
if(f_w/f_h>self.imageEdit.size.width/self.imageEdit.size.height)
{
f_w = f_h*self.imageEdit.size.width/self.imageEdit.size.height;
}
else
{
f_h = f_w*self.imageEdit.size.height/self.imageEdit.size.width;
}
[self.viewedit mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(self);
make.width.offset(f_w);
make.height.offset(f_h);
}];
}
}
UIView *viewitem = [self drawKuangView:type];
[self.arrItems addObject:viewitem];
}
-(void)setItemLayerHidden
{
for(UIView *view in self.arrItems)
{
[view.layer setBorderColor:[UIColor clearColor].CGColor];
[[view viewWithTag:1] setHidden:YES];
[[view viewWithTag:2] setHidden:YES];
}
}
-(CALayer *)getShowLayer
{
for(UIView *view in self.arrItems)
{
[view.layer setBorderColor:[UIColor clearColor].CGColor];
[[view viewWithTag:1] setHidden:YES];
[[view viewWithTag:2] setHidden:YES];
}
float fblv = self.imageEdit.size.width/self.viewedit.size.width;
UIImage *imagetemp = [self imageFromView:self.viewedit];
UIImageView *imgvback = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.viewedit.width*fblv, self.viewedit.height*fblv)];
[imgvback setImage:imagetemp];
for(UIView *view in self.arrItems)
{
[view.layer setBorderColor:[UIColor whiteColor].CGColor];
[[view viewWithTag:1] setHidden:NO];
[[view viewWithTag:2] setHidden:NO];
}
return imgvback.layer;
}
//
- (UIImage *)imageFromView:(UIView *)view {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0.0);///
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return snapshotImage;
}
-(void)delAction:(UIButton *)sender
{
[sender.superview removeFromSuperview];
}
//
- (void)panTwoGestureAction:(UIPanGestureRecognizer *)pan{
if(pan.state == UIGestureRecognizerStateBegan){
CGPoint transP = [pan locationInView:self.viewedit];
self.viewboy = pan.view.superview;
self.transLast = transP;
}else if(pan.state == UIGestureRecognizerStateChanged){
CGPoint transP = [pan translationInView:self.viewedit];
self.viewboy.width += transP.x;
if(self.viewboy.width<20)self.viewboy.width=20;
self.viewboy.height += transP.y;
if(self.viewboy.height<20)self.viewboy.height=20;
[self kuangBianJie:NO];
[pan setTranslation:CGPointZero inView:self.viewedit];
}else if(pan.state == UIGestureRecognizerStateEnded){
self.transLast = self.viewboy.frame.origin;
}
}
///
-(void)kuangBianJie:(BOOL)ismove
{
if(ismove)
{///
if(self.viewboy.origin.x+self.viewboy.size.width>self.viewedit.width)
{
self.viewboy.right = self.viewedit.width;
}
if(self.viewboy.origin.y+self.viewboy.size.height>self.viewedit.height)
{
self.viewboy.bottom = self.viewedit.height;
}
}
else
{///
if(self.viewboy.origin.x+self.viewboy.size.width>self.viewedit.width)
{
self.viewboy.width = self.viewedit.width -self.viewboy.origin.x;
}
if(self.viewboy.origin.y+self.viewboy.size.height>self.viewedit.height)
{
self.viewboy.height = self.viewedit.height -self.viewboy.origin.y;
}
}
if(self.viewboy.origin.x<0)
{
self.viewboy.frame = CGRectMake(0, self.viewboy.origin.y, self.viewboy.width, self.viewboy.height);
}
if(self.viewboy.origin.y<0)
{
self.viewboy.frame = CGRectMake(self.viewboy.origin.x, 0, self.viewboy.width, self.viewboy.height);
}
}
///
-(void)panMoveAction:(UIPanGestureRecognizer *)pan{
if(pan.state == UIGestureRecognizerStateBegan){
self.viewboy = pan.view;
}else if(pan.state == UIGestureRecognizerStateChanged){
CGPoint transP = [pan translationInView:self.viewboy];
self.viewboy.transform = CGAffineTransformTranslate(self.viewboy.transform, transP.x, transP.y);
[self kuangBianJie:YES];
[pan setTranslation:CGPointZero inView:self.viewboy];
}else if(pan.state == UIGestureRecognizerStateEnded){
}
}
- (WYCamaImageTools *)tools {
if (!_tools) {
_tools = [[WYCamaImageTools alloc] init];
_tools.delegate = self;
}return _tools;
}
@end

View File

@ -0,0 +1,23 @@
//
// ShiPingEditShiChangView.h
// ProductApp
//
// Created by 工作 on 2025/4/9.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@protocol ShiPingEditShiChangViewDelegate <NSObject>
-(void)timeChange:(CGFloat)start end:(CGFloat)end isstart:(BOOL)isstart;
@end
@interface ShiPingEditShiChangView : UIView
///
@property (nonatomic , strong) NSURL *urlvideo;
///
@property (nonatomic , weak) id<ShiPingEditShiChangViewDelegate>delegate;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,148 @@
//
// ShiPingEditShiChangView.m
// ProductApp
//
// Created by on 2025/4/9.
//
#import "ShiPingEditShiChangView.h"
#import <AVFoundation/AVFoundation.h>
@interface ShiPingEditShiChangView ()
///
@property (nonatomic , strong) UIView *viewleft;
@property (nonatomic , strong) UIView *viewright;
@property (nonatomic , strong) UIView *viewleftback;
@property (nonatomic , strong) UIView *viewrightback;
///s
@property (nonatomic , assign) CGFloat seconds;
///
@property (nonatomic , assign) CGFloat start;
@property (nonatomic , assign) CGFloat end;
@end
@implementation ShiPingEditShiChangView
-(id)initWithFrame:(CGRect)frame
{
if(self = [super initWithFrame:frame])
{
[self.layer setBorderWidth:1];
[self.layer setBorderColor:[UIColor whiteColor].CGColor];
UIImageView *imgvback = [[UIImageView alloc] init];
[imgvback setImage:[UIImage imageNamed:@"video_jianqiesc"]];
[self addSubview:imgvback];
[imgvback mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
UIView *viewleftback = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 40)];
[viewleftback setBackgroundColor:RGBACOLOR(0, 0, 0, 0.6)];
[self addSubview:viewleftback];
_viewleftback =viewleftback;
UIView *viewleft = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 40)];
[viewleft setBackgroundColor:[UIColor whiteColor]];
[self addSubview:viewleft];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panMoveAction:)];
[viewleft addGestureRecognizer:pan];
_viewleft = viewleft;
[viewleftback mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.left.equalTo(self);
make.right.equalTo(viewleft.mas_right);
}];
UIView *viewrightback = [[UIView alloc] initWithFrame:CGRectMake(self.width, 0, 0, 40)];
[viewrightback setBackgroundColor:RGBACOLOR(0, 0, 0, 0.6)];
[self addSubview:viewrightback];
_viewrightback = viewrightback;
UIView *viewright = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 40)];
[viewright setBackgroundColor:[UIColor whiteColor]];
[self addSubview:viewright];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
viewright.right = self.width;
});
UIPanGestureRecognizer *pan1 = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panMoveActionR:)];
[viewright addGestureRecognizer:pan1];
_viewright = viewright;
}
return self;
}
-(void)setUrlvideo:(NSURL *)urlvideo
{
_urlvideo = urlvideo;
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:self.urlvideo options:nil];
CMTime duration = asset.duration;
CGFloat seconds = CMTimeGetSeconds(duration);
self.seconds = seconds;
self.start = 0;
self.end = self.seconds;
if(self.delegate)
{
[self.delegate timeChange:self.start end:self.end isstart:YES];
}
}
///
-(void)panMoveAction:(UIPanGestureRecognizer *)pan{
UIView *view = pan.view;
if(pan.state == UIGestureRecognizerStateBegan){
}else if(pan.state == UIGestureRecognizerStateChanged){
CGPoint transP = [pan translationInView:view];
view.transform = CGAffineTransformTranslate(view.transform, transP.x, 0);
if(view.left<0)view.left=0;
if(view.right>=self.viewright.left)view.right = self.viewright.left;
[pan setTranslation:CGPointZero inView:view];
self.start = self.seconds/(self.width-self.viewleft.width*2)*view.left;
if(self.delegate)
{
[self.delegate timeChange:self.start end:self.end isstart:YES];
}
}else if(pan.state == UIGestureRecognizerStateEnded||pan.state == UIGestureRecognizerStateCancelled||pan.state == UIGestureRecognizerStateFailed){
}
self.viewleftback.width = view.left;
self.viewleftback.left = 0;
}
///
-(void)panMoveActionR:(UIPanGestureRecognizer *)pan{
UIView *view = pan.view;
if(pan.state == UIGestureRecognizerStateBegan){
}else if(pan.state == UIGestureRecognizerStateChanged){
CGPoint transP = [pan translationInView:view];
view.transform = CGAffineTransformTranslate(view.transform, transP.x, 0);
if(view.right>self.width)view.right=self.width;
if(view.left<self.viewleft.right)view.left = self.viewleft.right;
[pan setTranslation:CGPointZero inView:view];
self.end = self.seconds-(self.seconds/(self.width-self.viewleft.width*2)*(self.width-view.right));
if(self.delegate)
{
[self.delegate timeChange:self.start end:self.end isstart:NO];
}
}else if(pan.state == UIGestureRecognizerStateEnded||pan.state == UIGestureRecognizerStateCancelled||pan.state == UIGestureRecognizerStateFailed){
}
self.viewrightback.right = self.width;
self.viewrightback.width = self.width-view.right;
}
@end

View File

@ -0,0 +1,17 @@
//
// ShiPingEditJGViewController.h
// ProductApp
//
// Created by 工作 on 2025/4/9.
//
#import "BaseViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface ShiPingEditJGViewController : BaseViewController
///
@property (nonatomic , strong) NSURL *urlvideo;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,48 @@
//
// ShiPingEditJGViewController.m
// ProductApp
//
// Created by on 2025/4/9.
//
#import "ShiPingEditJGViewController.h"
#import "ShiPingEditJGView.h"
@interface ShiPingEditJGViewController ()
///
@property (nonatomic , strong) ShiPingEditJGView *viewShow;
@end
@implementation ShiPingEditJGViewController
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:NO];
[self showNaviGationView:YES];
[self.navigationView setBackgroundColor:RGBCOLOR(20, 20, 20)];
[self.navigationView setTitle:@"" titleColor:RGBACOLOR(255, 255, 255, 0.9)];
}
-(void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[self.viewShow stopPlayer];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self.view setBackgroundColor:RGBCOLOR(20, 20, 20)];
ShiPingEditJGView *view = [[ShiPingEditJGView alloc] init];
[self.view addSubview:view];
[view mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.equalTo(self.view);
make.top.offset(NavHeight);
}];
view.urlvideo = self.urlvideo;
_viewShow = view;
}
@end

View File

@ -0,0 +1,18 @@
//
// ShiPingEditJGView.h
// ProductApp
//
// Created by 工作 on 2025/4/9.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface ShiPingEditJGView : UIView
///
@property (nonatomic , strong) NSURL *urlvideo;
-(void)stopPlayer;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,168 @@
//
// ShiPingEditJGView.m
// ProductApp
//
// Created by on 2025/4/9.
//
#import "ShiPingEditJGView.h"
#import "WMPlayer.h"
#import "ImageSaveManager.h"
#import "NomoAlterView.h"
#import "PublicNetWorkManager.h"
#import "HuiYuanZXViewController.h"
#import "BaoCunAlterView.h"
@interface ShiPingEditJGView ()<WMPlayerDelegate>
@property (nonatomic , strong) WMPlayer *player;
@end
@implementation ShiPingEditJGView
-(id)initWithFrame:(CGRect)frame
{
if(self = [super initWithFrame:frame])
{
}
return self;
}
-(void)setUrlvideo:(NSURL *)urlvideo
{
_urlvideo = urlvideo;
UIView *viewback = [[UIView alloc] init];
[self addSubview:viewback];
[viewback mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.equalTo(self);
make.bottom.equalTo(self).offset(-TabHeight-80);
}];
WMPlayerModel *model = [[WMPlayerModel alloc] init];
model.videoURL = urlvideo;
WMPlayer *player = [[WMPlayer alloc] initPlayerModel:model];
[player setDelegate:self];
_player = player;
[self.player bottomViewShow:YES];
[viewback addSubview:self.player];
[self.player mas_remakeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(viewback);
}];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.player play];
});
UIButton *btbottom = [[UIButton alloc] init];
[btbottom setTitle:@"取消" forState:UIControlStateNormal];
[btbottom setTitleColor:RGBACOLOR(255, 255, 255, 0.9) forState:UIControlStateNormal];
[btbottom.titleLabel setFont:[UIFont systemFontOfSize:17]];
[self addSubview:btbottom];
[btbottom mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(0);
make.width.offset(60);
make.height.offset(40);
make.bottom.equalTo(self).offset(-TabHeight+40);
}];
[btbottom setTag:0];
[btbottom addTarget:self action:@selector(bottomAction:) forControlEvents:UIControlEventTouchUpInside];
UIButton *btbottom1 = [[UIButton alloc] init];
[btbottom1 setTitle:@"保存" forState:UIControlStateNormal];
[btbottom1 setTitleColor:RGBCOLOR(240, 54, 94) forState:UIControlStateNormal];
[btbottom1.titleLabel setFont:[UIFont systemFontOfSize:17]];
[self addSubview:btbottom1];
[btbottom1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self);
make.width.offset(60);
make.height.offset(40);
make.bottom.equalTo(btbottom);
}];
[btbottom1 setTag:1];
[btbottom1 addTarget:self action:@selector(bottomAction:) forControlEvents:UIControlEventTouchUpInside];
}
-(void)stopPlayer
{
[self.player pause];
}
-(void)bottomAction:(UIButton *)sender
{
if(sender.tag==1)
{
if([UserInfoModel pushLoinVC:self.viewController ispush:YES]==NO)return;;
[ImageSaveManager getSaveIn:^(BOOL issave) {
dispatch_async(dispatch_get_main_queue(), ^{
if(issave)
{
[self getQuanXian];
}
else
{
[NomoAlterView showInfo:@"无相册权限请到设置中开启APP相册权限再分享照片>所有照片 权限" SelectTag:^(NSInteger tag) {
if(tag==1)
{
[Tools pushAppSet];
}
}];
}
});
}];
}
else
{
[self.viewController.navigationController popViewControllerAnimated:YES];
}
}
///
-(void)getQuanXian
{
[PublicNetWorkManager requestUserAuthData:self scene:@"wechat" Callback:^(BOOL state, UserAuthModel *responseObject, NSString * _Nullable describle) {
if(state)
{
if(responseObject.data.auth.boolValue == YES)
{
///
[ImageSaveManager save:self.urlvideo back:^(PHAsset * _Nonnull asset) {
if(asset)
{
[self upDataUserState];
[BaoCunAlterView showName:@"已保存到系统相册中" back:^(NSInteger itag) {
if(itag==1)
{
[Tools gotuxc];
}
}];
}
}];
}
else
{///
HuiYuanZXViewController *vc = [[HuiYuanZXViewController alloc] init];
vc.source = @"video_edit_video";
[self.viewController.navigationController pushViewController:vc animated:YES];
[UserInfoModel shijianShangBao:0 key:@"client.jump.to.member.recharge" value:@"video_edit_video" extra:@""];
}
}
else
{
[HXHud showMessage:describle afterDelayType:0];
}
}];
}
///
-(void)upDataUserState
{
[PublicNetWorkManager requestUserAuthPostData:self scene:@"audioExtract" count:@"1" Callback:^(BOOL state, id _Nullable responseObject, NSString * _Nullable describle) {
}];
}
@end

View File

@ -48,7 +48,7 @@
make.right.left.equalTo(self.view);
make.bottom.equalTo(self.view);
}];
// [viewbottom setHidden:YES];
[viewbottom setHidden:YES];
[self drawbottomView:viewbottom];
_viewbottom = viewbottom;
}

View File

@ -59,7 +59,7 @@
make.right.left.equalTo(self.view);
make.bottom.equalTo(self.view);
}];
// [viewbottom setHidden:YES];
[viewbottom setHidden:YES];
[self drawbottomView:viewbottom];
_viewbottom = viewbottom;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.