基本做完
This commit is contained in:
parent
364e4a8115
commit
e010fcb2ff
|
@ -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|
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
|
@ -0,0 +1,62 @@
|
|||
# ICGVideoTrimmer
|
||||
A library for quick video trimming based on `SAVideoRangeSlider`, mimicking the behavior of Instagram's.
|
||||
|
||||

|
||||
|
||||
## 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.
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
58
ProductApp/Pods/Pods.xcodeproj/xcuserdata/gongzuo.xcuserdatad/xcschemes/ICGVideoTrimmer.xcscheme
generated
Normal file
58
ProductApp/Pods/Pods.xcodeproj/xcuserdata/gongzuo.xcuserdatad/xcschemes/ICGVideoTrimmer.xcscheme
generated
Normal 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>
|
|
@ -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>
|
||||
|
|
26
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer-Info.plist
generated
Normal file
26
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer-Info.plist
generated
Normal 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>
|
5
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer-dummy.m
generated
Normal file
5
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer-dummy.m
generated
Normal file
|
@ -0,0 +1,5 @@
|
|||
#import <Foundation/Foundation.h>
|
||||
@interface PodsDummy_ICGVideoTrimmer : NSObject
|
||||
@end
|
||||
@implementation PodsDummy_ICGVideoTrimmer
|
||||
@end
|
12
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer-prefix.pch
generated
Normal file
12
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer-prefix.pch
generated
Normal 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
|
||||
|
20
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer-umbrella.h
generated
Normal file
20
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer-umbrella.h
generated
Normal 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[];
|
||||
|
13
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer.debug.xcconfig
generated
Normal file
13
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer.debug.xcconfig
generated
Normal 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
|
6
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer.modulemap
generated
Normal file
6
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer.modulemap
generated
Normal file
|
@ -0,0 +1,6 @@
|
|||
framework module ICGVideoTrimmer {
|
||||
umbrella header "ICGVideoTrimmer-umbrella.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
13
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer.release.xcconfig
generated
Normal file
13
ProductApp/Pods/Target Support Files/ICGVideoTrimmer/ICGVideoTrimmer.release.xcconfig
generated
Normal 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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
Binary file not shown.
|
@ -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/首页/视频号/ShiPingHaoViewController.m"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "177"
|
||||
endingLineNumber = "177"
|
||||
landmarkName = "-goAction"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
</Bucket>
|
||||
|
|
22
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_图片.imageset/Contents.json
vendored
Normal file
22
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_图片.imageset/Contents.json
vendored
Normal 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
|
||||
}
|
||||
}
|
BIN
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_图片.imageset/组 43049@2x(1).png
vendored
Normal file
BIN
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_图片.imageset/组 43049@2x(1).png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
BIN
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_图片.imageset/组 43049@3x(1).png
vendored
Normal file
BIN
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_图片.imageset/组 43049@3x(1).png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
22
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_文字.imageset/Contents.json
vendored
Normal file
22
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_文字.imageset/Contents.json
vendored
Normal 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
|
||||
}
|
||||
}
|
BIN
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_文字.imageset/组 43049@2x.png
vendored
Normal file
BIN
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_文字.imageset/组 43049@2x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
BIN
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_文字.imageset/组 43049@3x.png
vendored
Normal file
BIN
ProductApp/ProductApp/Assets.xcassets/首页/imageedit_文字.imageset/组 43049@3x.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
21
ProductApp/ProductApp/Assets.xcassets/首页/video_jianqiesc.imageset/Contents.json
vendored
Normal file
21
ProductApp/ProductApp/Assets.xcassets/首页/video_jianqiesc.imageset/Contents.json
vendored
Normal 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 |
|
@ -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"/>
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
版本号
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GT_MinimumOSVersion</key>
|
||||
<string>10</string>
|
||||
<key>LSApplicationQueriesSchemes</key>
|
||||
<array>
|
||||
<string>weixin</string>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
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];
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}];
|
||||
|
|
|
@ -246,14 +246,17 @@
|
|||
{
|
||||
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;
|
||||
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"])
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface DuiHuanZSViewController : BaseViewController
|
||||
|
||||
///
|
||||
@property (nonatomic , strong) NSString *source;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}];
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
@ -96,9 +119,18 @@
|
|||
return 0.01;
|
||||
}
|
||||
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
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
|
||||
{
|
||||
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, UISCREEN_WIDTH, 55)];
|
||||
|
@ -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];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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];
|
||||
|
||||
///
|
||||
|
||||
}
|
||||
-(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(sender.tag==0)
|
||||
{
|
||||
[self.viewController.navigationController popViewControllerAnimated:YES];
|
||||
return;
|
||||
}
|
||||
YiVideoEditor *editor = [[YiVideoEditor alloc] initWithVideoURL:self.urlvideo];
|
||||
///1水印 2MD5 3裁剪 5去背景
|
||||
if(self.type==1)
|
||||
{
|
||||
|
||||
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];
|
||||
});
|
||||
|
||||
}];
|
||||
}
|
||||
else if (self.type==3)
|
||||
{
|
||||
CGRect recttemp = [self.vieweditBack getRectEdit];
|
||||
if(recttemp.size.width == 0.0)
|
||||
{
|
||||
[HXHud showMessage:@"请选择裁剪区域" afterDelayType:0];
|
||||
return;
|
||||
}
|
||||
YiVideoEditor *editor = [[YiVideoEditor alloc] initWithVideoURL:self.urlvideo];
|
||||
|
||||
///裁剪视频
|
||||
[editor cropWithCropFrame:recttemp];
|
||||
|
||||
// editor
|
||||
///添加图层
|
||||
// [editor addLayerWithLayer:<#(CALayer * _Nonnull)#>]
|
||||
///添加音频
|
||||
// editor addAudioWithAsset:<#(AVAsset * _Nonnull)#> startingAt:<#(CGFloat)#> trackDuration:<#(CGFloat)#>
|
||||
|
||||
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];
|
||||
DynamicVideoViewController *vc = [[DynamicVideoViewController alloc] init];
|
||||
[vc setdataArray:[NSMutableArray arrayWithObject:[NSURL fileURLWithPath:strsavepath]] index:0];
|
||||
ShiPingEditJGViewController *vc = [[ShiPingEditJGViewController alloc] init];
|
||||
vc.urlvideo = [NSURL fileURLWithPath:strsavepath];
|
||||
[self.viewController.navigationController pushViewController:vc animated:NO];
|
||||
[vc show];
|
||||
});
|
||||
|
||||
}
|
||||
else if(session.status==AVAssetExportSessionStatusFailed)
|
||||
{
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[LoadAlterView dismis];
|
||||
});
|
||||
|
||||
NSLog(@"error = %@",session.error);
|
||||
}
|
||||
}];
|
||||
|
||||
/*
|
||||
视频裁剪
|
||||
视频加水印
|
||||
视频转音频
|
||||
MD5去重
|
||||
*/
|
||||
}
|
||||
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];
|
||||
|
||||
// 设置剪辑的开始时间(例如:从第5秒开始)和结束时间(例如:到第10秒结束)
|
||||
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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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.
Loading…
Reference in New Issue