├── Pods
├── HandyFrame
│ ├── LICENSE
│ ├── README.md
│ ├── UIView+LayoutMethods.h
│ └── UIView+LayoutMethods.m
├── Headers
│ ├── Private
│ │ └── HandyFrame
│ │ │ └── UIView+LayoutMethods.h
│ └── Public
│ │ └── HandyFrame
│ │ └── UIView+LayoutMethods.h
├── Target Support Files
│ ├── HandyFrame
│ │ ├── HandyFrame-dummy.m
│ │ ├── HandyFrame-prefix.pch
│ │ └── HandyFrame.xcconfig
│ └── Pods-DDSoundWave
│ │ ├── Pods-DDSoundWave-dummy.m
│ │ ├── Pods-DDSoundWave-acknowledgements.markdown
│ │ ├── Pods-DDSoundWave.debug.xcconfig
│ │ ├── Pods-DDSoundWave.release.xcconfig
│ │ ├── Pods-DDSoundWave-acknowledgements.plist
│ │ ├── Pods-DDSoundWave-resources.sh
│ │ └── Pods-DDSoundWave-frameworks.sh
├── Manifest.lock
└── Pods.xcodeproj
│ ├── xcuserdata
│ └── teaker.xcuserdatad
│ │ └── xcschemes
│ │ ├── xcschememanagement.plist
│ │ ├── HandyFrame.xcscheme
│ │ └── Pods-DDSoundWave.xcscheme
│ └── project.pbxproj
├── .gitignore
├── .DS_Store
├── images
└── soundwave.gif
├── DDSoundWave
├── Assets.xcassets
│ ├── Contents.json
│ ├── robot_microphone.imageset
│ │ ├── robot_microphone@2x.png
│ │ ├── robot_microphone@3x.png
│ │ └── Contents.json
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── ViewController.h
├── DDSoundWave
│ ├── DDSoundWaveView.h
│ └── DDSoundWaveView.m
├── AppDelegate.h
├── main.m
├── ViewController.m
├── Base.lproj
│ ├── Main.storyboard
│ └── LaunchScreen.storyboard
├── Info.plist
└── AppDelegate.m
├── README.md
├── DDSoundWave.xcworkspace
├── xcuserdata
│ ├── teaker.xcuserdatad
│ │ ├── xcdebugger
│ │ │ └── Breakpoints_v2.xcbkptlist
│ │ └── UserInterfaceState.xcuserstate
│ └── liuzhida.xcuserdatad
│ │ └── UserInterfaceState.xcuserstate
├── contents.xcworkspacedata
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── DDSoundWave.xcodeproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcuserdata
│ │ └── teaker.xcuserdatad
│ │ └── UserInterfaceState.xcuserstate
├── xcuserdata
│ ├── liuzhida.xcuserdatad
│ │ └── xcschemes
│ │ │ └── xcschememanagement.plist
│ └── teaker.xcuserdatad
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
└── project.pbxproj
├── Podfile
└── Podfile.lock
/Pods/HandyFrame/LICENSE:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | #.gitignore
2 | # ignore cocoaPods
3 | /Pods
4 |
--------------------------------------------------------------------------------
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuzhida33/DDSoundWave/HEAD/.DS_Store
--------------------------------------------------------------------------------
/Pods/Headers/Private/HandyFrame/UIView+LayoutMethods.h:
--------------------------------------------------------------------------------
1 | ../../../HandyFrame/UIView+LayoutMethods.h
--------------------------------------------------------------------------------
/Pods/Headers/Public/HandyFrame/UIView+LayoutMethods.h:
--------------------------------------------------------------------------------
1 | ../../../HandyFrame/UIView+LayoutMethods.h
--------------------------------------------------------------------------------
/images/soundwave.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuzhida33/DDSoundWave/HEAD/images/soundwave.gif
--------------------------------------------------------------------------------
/DDSoundWave/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DDSoundWave
2 | 根据语音绘制波浪动画
3 |
4 | # 效果图
5 |
6 | 
--------------------------------------------------------------------------------
/DDSoundWave.xcworkspace/xcuserdata/teaker.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/HandyFrame/HandyFrame-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_HandyFrame : NSObject
3 | @end
4 | @implementation PodsDummy_HandyFrame
5 | @end
6 |
--------------------------------------------------------------------------------
/DDSoundWave/Assets.xcassets/robot_microphone.imageset/robot_microphone@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuzhida33/DDSoundWave/HEAD/DDSoundWave/Assets.xcassets/robot_microphone.imageset/robot_microphone@2x.png
--------------------------------------------------------------------------------
/DDSoundWave/Assets.xcassets/robot_microphone.imageset/robot_microphone@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuzhida33/DDSoundWave/HEAD/DDSoundWave/Assets.xcassets/robot_microphone.imageset/robot_microphone@3x.png
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-DDSoundWave/Pods-DDSoundWave-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_DDSoundWave : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_DDSoundWave
5 | @end
6 |
--------------------------------------------------------------------------------
/DDSoundWave.xcworkspace/xcuserdata/teaker.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuzhida33/DDSoundWave/HEAD/DDSoundWave.xcworkspace/xcuserdata/teaker.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/DDSoundWave.xcworkspace/xcuserdata/liuzhida.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuzhida33/DDSoundWave/HEAD/DDSoundWave.xcworkspace/xcuserdata/liuzhida.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/DDSoundWave.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/DDSoundWave.xcodeproj/project.xcworkspace/xcuserdata/teaker.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuzhida33/DDSoundWave/HEAD/DDSoundWave.xcodeproj/project.xcworkspace/xcuserdata/teaker.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-DDSoundWave/Pods-DDSoundWave-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## HandyFrame
5 |
6 |
7 | Generated by CocoaPods - https://cocoapods.org
8 |
--------------------------------------------------------------------------------
/DDSoundWave/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // DDSoundWave
4 | //
5 | // Created by Teaker on 2018/4/6.
6 | // Copyright © 2018年 Liuzhida. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/HandyFrame/HandyFrame-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/DDSoundWave.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/DDSoundWave.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/DDSoundWave/DDSoundWave/DDSoundWaveView.h:
--------------------------------------------------------------------------------
1 | //
2 | // DDSoundWaveView.h
3 | // DDSoundWave
4 | //
5 | // Created by Teaker on 2018/4/6.
6 | // Copyright © 2018年 Liuzhida. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | /**
12 | 绘制波浪特效视图
13 | */
14 | @interface DDSoundWaveView : UIView
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'DDSoundWave' do
5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
6 | # use_frameworks!
7 |
8 | # Pods for DDSoundWave
9 | pod 'HandyFrame'
10 |
11 | end
12 |
--------------------------------------------------------------------------------
/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - HandyFrame (1.2.0)
3 |
4 | DEPENDENCIES:
5 | - HandyFrame
6 |
7 | SPEC REPOS:
8 | https://github.com/CocoaPods/Specs.git:
9 | - HandyFrame
10 |
11 | SPEC CHECKSUMS:
12 | HandyFrame: 437df83ba7563c56cd55b9bd0128561995463110
13 |
14 | PODFILE CHECKSUM: eef6b6ab2e1a2792db52dfe118026750006f0d86
15 |
16 | COCOAPODS: 1.5.0.beta.1
17 |
--------------------------------------------------------------------------------
/DDSoundWave/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // DDSoundWave
4 | //
5 | // Created by Teaker on 2018/4/6.
6 | // Copyright © 2018年 Liuzhida. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - HandyFrame (1.2.0)
3 |
4 | DEPENDENCIES:
5 | - HandyFrame
6 |
7 | SPEC REPOS:
8 | https://github.com/CocoaPods/Specs.git:
9 | - HandyFrame
10 |
11 | SPEC CHECKSUMS:
12 | HandyFrame: 437df83ba7563c56cd55b9bd0128561995463110
13 |
14 | PODFILE CHECKSUM: eef6b6ab2e1a2792db52dfe118026750006f0d86
15 |
16 | COCOAPODS: 1.5.0.beta.1
17 |
--------------------------------------------------------------------------------
/DDSoundWave/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // DDSoundWave
4 | //
5 | // Created by Teaker on 2018/4/6.
6 | // Copyright © 2018年 Liuzhida. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/DDSoundWave.xcodeproj/xcuserdata/liuzhida.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | DDSoundWave.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/DDSoundWave.xcodeproj/xcuserdata/teaker.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | DDSoundWave.xcscheme
8 |
9 | orderHint
10 | 2
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/DDSoundWave/Assets.xcassets/robot_microphone.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "robot_microphone@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "robot_microphone@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Pods/Target Support Files/HandyFrame/HandyFrame.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/HandyFrame
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/HandyFrame" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/HandyFrame"
4 | OTHER_LDFLAGS = -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/HandyFrame
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-DDSoundWave/Pods-DDSoundWave.debug.xcconfig:
--------------------------------------------------------------------------------
1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/HandyFrame"
3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/HandyFrame"
4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/HandyFrame"
5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"HandyFrame" -framework "UIKit"
6 | PODS_BUILD_DIR = ${BUILD_DIR}
7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-DDSoundWave/Pods-DDSoundWave.release.xcconfig:
--------------------------------------------------------------------------------
1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/HandyFrame"
3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/HandyFrame"
4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/HandyFrame"
5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"HandyFrame" -framework "UIKit"
6 | PODS_BUILD_DIR = ${BUILD_DIR}
7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/Pods/Pods.xcodeproj/xcuserdata/teaker.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | HandyFrame.xcscheme
8 |
9 | isShown
10 |
11 | orderHint
12 | 0
13 |
14 | Pods-DDSoundWave.xcscheme
15 |
16 | isShown
17 |
18 | orderHint
19 | 1
20 |
21 |
22 | SuppressBuildableAutocreation
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/DDSoundWave/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // DDSoundWave
4 | //
5 | // Created by Teaker on 2018/4/6.
6 | // Copyright © 2018年 Liuzhida. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "DDSoundWaveView.h"
11 | #import
12 |
13 | @interface ViewController ()
14 | @property (nonatomic, strong) DDSoundWaveView *waveView;
15 | @end
16 |
17 | @implementation ViewController
18 |
19 | - (void)viewDidLoad {
20 | [super viewDidLoad];
21 | self.view.backgroundColor = [UIColor colorWithRed:39 / 255.0 green:35 / 255.0 blue:36 / 255.0 alpha:1];
22 | [self.view addSubview:self.waveView];
23 | }
24 |
25 | - (void)viewWillLayoutSubviews {
26 | [super viewWillLayoutSubviews];
27 | [self.waveView setCt_size:CGSizeMake(SCREEN_WIDTH, 80)];
28 | [self.waveView centerXEqualToView:self.view];
29 | [self.waveView setCt_y:SCREEN_HEIGHT-self.view.safeAreaBottomGap - 80];
30 | }
31 |
32 |
33 | - (void)didReceiveMemoryWarning {
34 | [super didReceiveMemoryWarning];
35 | }
36 |
37 | - (DDSoundWaveView *)waveView {
38 | if (!_waveView) {
39 | _waveView = [[DDSoundWaveView alloc] init];
40 | }
41 | return _waveView;
42 | }
43 |
44 |
45 | @end
46 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-DDSoundWave/Pods-DDSoundWave-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 |
18 | License
19 | MIT
20 | Title
21 | HandyFrame
22 | Type
23 | PSGroupSpecifier
24 |
25 |
26 | FooterText
27 | Generated by CocoaPods - https://cocoapods.org
28 | Title
29 |
30 | Type
31 | PSGroupSpecifier
32 |
33 |
34 | StringsTable
35 | Acknowledgements
36 | Title
37 | Acknowledgements
38 |
39 |
40 |
--------------------------------------------------------------------------------
/Pods/HandyFrame/README.md:
--------------------------------------------------------------------------------
1 | # HandyAutoLayout
2 |
3 | [](https://cocoapods.org) [](http:// opensource.org/licenses/MIT)
4 |
5 | `HandyAutoLayout` are handy categories for generate NSLayoutConstraint programatically.
6 |
7 | # New features
8 |
9 | ## Add new methods for 1.1.0
10 | ```objective-c
11 | - (void)fromTheTop:(CGFloat)distance ofView:(UIView *)view;
12 | - (void)fromTheBottom:(CGFloat)distance ofView:(UIView *)view;
13 | - (void)fromTheLeft:(CGFloat)distance ofView:(UIView *)view;
14 | - (void)fromTheRight:(CGFloat)distance ofView:(UIView *)view;
15 | ```
16 | # Install
17 |
18 | if you are using AutoLayout:
19 |
20 | ```
21 | pod 'HandyAutoLayout'
22 | ```
23 |
24 | if you are using Frame:
25 |
26 | ```
27 | pod 'HandyFrame'
28 | ```
29 |
30 |
31 | # Examples
32 |
33 | for auto layout:
34 |
35 | ```objective-c
36 | [self.view addConstraint:[self.tableView constraintCenterXEqualToView:self.view]];
37 | [self.view addConstraint:[self.tableView constraintWidthEqualToView:self.view]];
38 |
39 | [self.view addConstraints:[self.nextStepButton constraintsSize:CGSizeMake(300.0f, 40.0f)]];
40 | [self.view addConstraint:[self.nextStepButton constraintCenterXEqualToView:self.view]];
41 | ```
42 | for frame:
43 |
44 | ```objective-c
45 | [self.subtitleLabel leftEqualToView:self.titleLabel];
46 | [self.subtitleLabel top:14 FromView:self.timeLabel];
47 |
48 | [self.createPost centerXEqualToView:self.view];
49 | [self.createPost bottomInContainer:19.0f shouldResize:NO];
50 | ```
51 |
--------------------------------------------------------------------------------
/DDSoundWave/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/DDSoundWave/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIMainStoryboardFile
26 | Main
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UISupportedInterfaceOrientations~ipad
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationPortraitUpsideDown
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 | NSMicrophoneUsageDescription
45 | Demo 需要在机器人服务中使用您的麦克风权限
46 |
47 |
48 |
--------------------------------------------------------------------------------
/DDSoundWave/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/DDSoundWave/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "size" : "1024x1024",
91 | "scale" : "1x"
92 | }
93 | ],
94 | "info" : {
95 | "version" : 1,
96 | "author" : "xcode"
97 | }
98 | }
--------------------------------------------------------------------------------
/DDSoundWave/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // DDSoundWave
4 | //
5 | // Created by Teaker on 2018/4/6.
6 | // Copyright © 2018年 Liuzhida. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | // Override point for customization after application launch.
20 | return YES;
21 | }
22 |
23 |
24 | - (void)applicationWillResignActive:(UIApplication *)application {
25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
27 | }
28 |
29 |
30 | - (void)applicationDidEnterBackground:(UIApplication *)application {
31 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
33 | }
34 |
35 |
36 | - (void)applicationWillEnterForeground:(UIApplication *)application {
37 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
38 | }
39 |
40 |
41 | - (void)applicationDidBecomeActive:(UIApplication *)application {
42 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
43 | }
44 |
45 |
46 | - (void)applicationWillTerminate:(UIApplication *)application {
47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
48 | }
49 |
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/Pods/Pods.xcodeproj/xcuserdata/teaker.xcuserdatad/xcschemes/HandyFrame.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
45 |
46 |
52 |
53 |
55 |
56 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/Pods/Pods.xcodeproj/xcuserdata/teaker.xcuserdatad/xcschemes/Pods-DDSoundWave.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
45 |
46 |
52 |
53 |
55 |
56 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/Pods/HandyFrame/UIView+LayoutMethods.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+LayoutMethods.h
3 | // TmallClient4iOS-Prime
4 | //
5 | // Created by casa on 14/12/8.
6 | // Copyright (c) 2014年 casa. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
12 | #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
13 | #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
14 | #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
15 | #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
16 |
17 | #define SCREEN_WIDTH ([[UIScreen mainScreen]bounds].size.width)
18 | #define SCREEN_HEIGHT ([[UIScreen mainScreen]bounds].size.height)
19 |
20 | #define kHPercentage(a) (SCREEN_HEIGHT*((a)/667.00))
21 | #define kWPercentage(a) (SCREEN_WIDTH *((a)/375.00))
22 |
23 | #define SCREEN_WITHOUT_STATUS_HEIGHT (SCREEN_HEIGHT - [[UIApplication sharedApplication] statusBarFrame].size.height)
24 |
25 | typedef CGFloat UIScreenType;
26 |
27 | static UIScreenType UIScreenType_iPhone5 = 320.0f;
28 | static UIScreenType UIScreenType_iPhone6 = 375.0f;
29 | static UIScreenType UIScreenType_iPhone6P = 414.0f;
30 |
31 | @interface UIView (LayoutMethods)
32 |
33 | // coordinator getters
34 | - (CGFloat)ct_height;
35 | - (CGFloat)ct_width;
36 | - (CGFloat)ct_x;
37 | - (CGFloat)ct_y;
38 | - (CGSize)ct_size;
39 | - (CGPoint)ct_origin;
40 | - (CGFloat)ct_centerX;
41 | - (CGFloat)ct_centerY;
42 |
43 | - (CGFloat)ct_left;
44 | - (CGFloat)ct_top;
45 | - (CGFloat)ct_bottom;
46 | - (CGFloat)ct_right;
47 |
48 | - (void)setCt_x:(CGFloat)x;
49 | - (void)setCt_left:(CGFloat)left;
50 | - (void)setCt_y:(CGFloat)y;
51 | - (void)setCt_top:(CGFloat)top;
52 |
53 | // height
54 | - (void)setCt_height:(CGFloat)height;
55 | - (void)heightEqualToView:(UIView *)view;
56 |
57 | // width
58 | - (void)setCt_width:(CGFloat)width;
59 | - (void)widthEqualToView:(UIView *)view;
60 |
61 | // size
62 | - (void)setCt_size:(CGSize)size;
63 | - (void)setSize:(CGSize)size screenType:(UIScreenType)screenType;
64 | - (void)sizeEqualToView:(UIView *)view;
65 |
66 | // center
67 | - (void)setCt_centerX:(CGFloat)centerX;
68 | - (void)setCt_centerY:(CGFloat)centerY;
69 | - (void)centerXEqualToView:(UIView *)view;
70 | - (void)centerYEqualToView:(UIView *)view;
71 | - (void)centerEqualToView:(UIView *)view;
72 |
73 | // top, bottom, left, right -- Version 1.1.0
74 | - (void)fromTheTop:(CGFloat)distance ofView:(UIView *)view;
75 | - (void)fromTheBottom:(CGFloat)distance ofView:(UIView *)view;
76 | - (void)fromTheLeft:(CGFloat)distance ofView:(UIView *)view;
77 | - (void)fromTheRight:(CGFloat)distance ofView:(UIView *)view;
78 |
79 | - (void)fromTheRelativeTop:(CGFloat)distance ofView:(UIView *)view screenType:(UIScreenType)screenType;
80 | - (void)fromTheRelativeBottom:(CGFloat)distance ofView:(UIView *)view screenType:(UIScreenType)screenType;
81 | - (void)fromTheRelativeLeft:(CGFloat)distance ofView:(UIView *)view screenType:(UIScreenType)screenType;
82 | - (void)fromTheRelativeRight:(CGFloat)distance ofView:(UIView *)view screenType:(UIScreenType)screenType;
83 |
84 | - (void)relativeTopInContainer:(CGFloat)top shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType;
85 | - (void)relativeBottomInContainer:(CGFloat)bottom shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType;
86 | - (void)relativeLeftInContainer:(CGFloat)left shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType;
87 | - (void)relativeRightInContainer:(CGFloat)right shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType;
88 |
89 | // top, bottom, left, right -- Old Version
90 | - (void)top:(CGFloat)top FromView:(UIView *)view;
91 | - (void)bottom:(CGFloat)bottom FromView:(UIView *)view;
92 | - (void)left:(CGFloat)left FromView:(UIView *)view;
93 | - (void)right:(CGFloat)right FromView:(UIView *)view;
94 |
95 | - (void)topRatio:(CGFloat)top FromView:(UIView *)view screenType:(UIScreenType)screenType;
96 | - (void)bottomRatio:(CGFloat)bottom FromView:(UIView *)view screenType:(UIScreenType)screenType;
97 | - (void)leftRatio:(CGFloat)left FromView:(UIView *)view screenType:(UIScreenType)screenType;
98 | - (void)rightRatio:(CGFloat)right FromView:(UIView *)view screenType:(UIScreenType)screenType;
99 |
100 | - (void)topInContainer:(CGFloat)top shouldResize:(BOOL)shouldResize;
101 | - (void)bottomInContainer:(CGFloat)bottom shouldResize:(BOOL)shouldResize;
102 | - (void)leftInContainer:(CGFloat)left shouldResize:(BOOL)shouldResize;
103 | - (void)rightInContainer:(CGFloat)right shouldResize:(BOOL)shouldResize;
104 |
105 | - (void)topRatioInContainer:(CGFloat)top shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType;
106 | - (void)bottomRatioInContainer:(CGFloat)bottom shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType;
107 | - (void)leftRatioInContainer:(CGFloat)left shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType;
108 | - (void)rightRatioInContainer:(CGFloat)right shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType;
109 |
110 | - (void)topEqualToView:(UIView *)view;
111 | - (void)bottomEqualToView:(UIView *)view;
112 | - (void)leftEqualToView:(UIView *)view;
113 | - (void)rightEqualToView:(UIView *)view;
114 |
115 | // imbueset
116 | - (void)fillWidth;
117 | - (void)fillHeight;
118 | - (void)fill;
119 |
120 | - (UIView *)topSuperView;
121 |
122 | // iPhoneX adapt
123 | - (CGFloat)safeAreaBottomGap;
124 | - (CGFloat)safeAreaTopGap;
125 | - (CGFloat)safeAreaLeftGap;
126 | - (CGFloat)safeAreaRightGap;
127 |
128 | @end
129 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-DDSoundWave/Pods-DDSoundWave-resources.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 | set -u
4 | set -o pipefail
5 |
6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
8 | # resources to, so exit 0 (signalling the script phase was successful).
9 | exit 0
10 | fi
11 |
12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
13 |
14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
15 | > "$RESOURCES_TO_COPY"
16 |
17 | XCASSET_FILES=()
18 |
19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
22 |
23 | case "${TARGETED_DEVICE_FAMILY:-}" in
24 | 1,2)
25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
26 | ;;
27 | 1)
28 | TARGET_DEVICE_ARGS="--target-device iphone"
29 | ;;
30 | 2)
31 | TARGET_DEVICE_ARGS="--target-device ipad"
32 | ;;
33 | 3)
34 | TARGET_DEVICE_ARGS="--target-device tv"
35 | ;;
36 | 4)
37 | TARGET_DEVICE_ARGS="--target-device watch"
38 | ;;
39 | *)
40 | TARGET_DEVICE_ARGS="--target-device mac"
41 | ;;
42 | esac
43 |
44 | install_resource()
45 | {
46 | if [[ "$1" = /* ]] ; then
47 | RESOURCE_PATH="$1"
48 | else
49 | RESOURCE_PATH="${PODS_ROOT}/$1"
50 | fi
51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then
52 | cat << EOM
53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
54 | EOM
55 | exit 1
56 | fi
57 | case $RESOURCE_PATH in
58 | *.storyboard)
59 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
60 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
61 | ;;
62 | *.xib)
63 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
64 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
65 | ;;
66 | *.framework)
67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
71 | ;;
72 | *.xcdatamodel)
73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
75 | ;;
76 | *.xcdatamodeld)
77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
79 | ;;
80 | *.xcmappingmodel)
81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
83 | ;;
84 | *.xcassets)
85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
87 | ;;
88 | *)
89 | echo "$RESOURCE_PATH" || true
90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
91 | ;;
92 | esac
93 | }
94 |
95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
100 | fi
101 | rm -f "$RESOURCES_TO_COPY"
102 |
103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
104 | then
105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets).
106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
107 | while read line; do
108 | if [[ $line != "${PODS_ROOT}*" ]]; then
109 | XCASSET_FILES+=("$line")
110 | fi
111 | done <<<"$OTHER_XCASSETS"
112 |
113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
114 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
115 | else
116 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_BUILD_DIR}/assetcatalog_generated_info.plist"
117 | fi
118 | fi
119 |
--------------------------------------------------------------------------------
/Pods/Target Support Files/Pods-DDSoundWave/Pods-DDSoundWave-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 | set -u
4 | set -o pipefail
5 |
6 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
7 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
8 | # frameworks to, so exit 0 (signalling the script phase was successful).
9 | exit 0
10 | fi
11 |
12 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
13 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
14 |
15 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
16 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
17 |
18 | # Used as a return value for each invocation of `strip_invalid_archs` function.
19 | STRIP_BINARY_RETVAL=0
20 |
21 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
22 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
23 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
24 |
25 | # Copies and strips a vendored framework
26 | install_framework()
27 | {
28 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
29 | local source="${BUILT_PRODUCTS_DIR}/$1"
30 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
31 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
32 | elif [ -r "$1" ]; then
33 | local source="$1"
34 | fi
35 |
36 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
37 |
38 | if [ -L "${source}" ]; then
39 | echo "Symlinked..."
40 | source="$(readlink "${source}")"
41 | fi
42 |
43 | # Use filter instead of exclude so missing patterns don't throw errors.
44 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
45 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
46 |
47 | local basename
48 | basename="$(basename -s .framework "$1")"
49 | binary="${destination}/${basename}.framework/${basename}"
50 | if ! [ -r "$binary" ]; then
51 | binary="${destination}/${basename}"
52 | fi
53 |
54 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
55 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
56 | strip_invalid_archs "$binary"
57 | fi
58 |
59 | # Resign the code if required by the build settings to avoid unstable apps
60 | code_sign_if_enabled "${destination}/$(basename "$1")"
61 |
62 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
63 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
64 | local swift_runtime_libs
65 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
66 | for lib in $swift_runtime_libs; do
67 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
68 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
69 | code_sign_if_enabled "${destination}/${lib}"
70 | done
71 | fi
72 | }
73 |
74 | # Copies and strips a vendored dSYM
75 | install_dsym() {
76 | local source="$1"
77 | if [ -r "$source" ]; then
78 | # Copy the dSYM into a the targets temp dir.
79 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
80 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
81 |
82 | local basename
83 | basename="$(basename -s .framework.dSYM "$source")"
84 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
85 |
86 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
87 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
88 | strip_invalid_archs "$binary"
89 | fi
90 |
91 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
92 | # Move the stripped file into its final destination.
93 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
94 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
95 | else
96 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
97 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
98 | fi
99 | fi
100 | }
101 |
102 | # Signs a framework with the provided identity
103 | code_sign_if_enabled() {
104 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
105 | # Use the current code_sign_identitiy
106 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
107 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
108 |
109 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
110 | code_sign_cmd="$code_sign_cmd &"
111 | fi
112 | echo "$code_sign_cmd"
113 | eval "$code_sign_cmd"
114 | fi
115 | }
116 |
117 | # Strip invalid architectures
118 | strip_invalid_archs() {
119 | binary="$1"
120 | # Get architectures for current target binary
121 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
122 | # Intersect them with the architectures we are building for
123 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
124 | # If there are no archs supported by this binary then warn the user
125 | if [[ -z "$intersected_archs" ]]; then
126 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
127 | STRIP_BINARY_RETVAL=0
128 | return
129 | fi
130 | stripped=""
131 | for arch in $binary_archs; do
132 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then
133 | # Strip non-valid architectures in-place
134 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1
135 | stripped="$stripped $arch"
136 | fi
137 | done
138 | if [[ "$stripped" ]]; then
139 | echo "Stripped $binary of architectures:$stripped"
140 | fi
141 | STRIP_BINARY_RETVAL=1
142 | }
143 |
144 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
145 | wait
146 | fi
147 |
--------------------------------------------------------------------------------
/DDSoundWave/DDSoundWave/DDSoundWaveView.m:
--------------------------------------------------------------------------------
1 | //
2 | // DDSoundWaveView.m
3 | // DDSoundWave
4 | //
5 | // Created by Teaker on 2018/4/6.
6 | // Copyright © 2018年 Liuzhida. All rights reserved.
7 | //
8 |
9 | #import "DDSoundWaveView.h"
10 | #import
11 | #import
12 | #import
13 | #import
14 |
15 | #define kNumberOfWaves 5
16 |
17 | @interface DDSoundWaveView () {
18 |
19 | CGFloat _phase; //相位
20 | CGFloat _phaseShift; //相位偏移
21 | CGFloat _amplitude; //振幅
22 | CGFloat _maxAmplitude; //波峰
23 | CGFloat _idleAmplitude; //波谷
24 | CGFloat _waveHeight; //波高度
25 | CGFloat _waveWidth; //波长度
26 | CGFloat _waveMid; //波中心点
27 | CGFloat _density; //波分布密度
28 | CGFloat _frequency; //波频率
29 | CGFloat _mainWaveWidth; //主波宽度
30 | CGFloat _decorativeWavesWidth;//其他波宽度
31 | }
32 | @property (nonatomic, strong) NSMutableArray * waves;
33 | @property (nonatomic, strong) CADisplayLink *displayLink; //计时器,用于刷新layer布局
34 | @property (nonatomic, strong) CALayer *waveLayer; //存放波浪layer
35 | @property (nonatomic, strong) AVAudioRecorder *audioRecorder; //录音器
36 | @property (nonatomic, assign) BOOL animated; //动画是否开始
37 | @property (nonatomic, strong) UIButton *microphoneBtn; //话筒
38 | @end
39 |
40 | @implementation DDSoundWaveView
41 |
42 | #pragma mark - overwrite init
43 |
44 | - (instancetype)init {
45 | self = [super init];
46 | if (self) {
47 | [self setup];
48 | }
49 | return self;
50 | }
51 |
52 | - (void)setup {
53 |
54 | _phaseShift = -0.25f;
55 | _idleAmplitude = 0.01f;
56 | _density = 1.f;
57 | _frequency = 1.2f;
58 | _mainWaveWidth = 2.0f;
59 | _decorativeWavesWidth = 1.0f;
60 |
61 | self.backgroundColor = [UIColor clearColor];
62 | [self addSubview:self.microphoneBtn];
63 | [self.layer addSublayer:self.waveLayer];
64 | UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(endRecord:)];
65 | [self addGestureRecognizer:tap];
66 | }
67 |
68 | - (void)layoutSubviews {
69 | [super layoutSubviews];
70 | self.waveLayer.frame = self.bounds;
71 | [self.microphoneBtn sizeToFit];
72 | [self.microphoneBtn centerEqualToView:self];
73 | }
74 |
75 | - (void)dealloc {
76 | [_displayLink invalidate];
77 | }
78 |
79 | #pragma mark - Event repose
80 |
81 | - (void)microphoneDidTap:(UIButton *)sender {
82 | if (_animated) {
83 | return;
84 | }
85 | __weak __typeof__(self) weak_self = self;
86 | if ([[AVAudioSession sharedInstance] recordPermission] == AVAudioSessionRecordPermissionUndetermined) {
87 | [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
88 | __strong __typeof__(weak_self) strong_self = weak_self;
89 | if (!strong_self) return ;
90 | if (granted) {
91 | //获取权限方法回调需要返回主线程操作
92 | dispatch_async(dispatch_get_main_queue(), ^{
93 | [strong_self startRecord];
94 | });
95 | }
96 | }];
97 | }else if ([[AVAudioSession sharedInstance] recordPermission] == AVAudioSessionRecordPermissionDenied) {
98 | UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"无法使用麦克风" message:@"请在iPhone的""设置-APP-麦克风""中打开开关" preferredStyle:UIAlertControllerStyleAlert];
99 | [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
100 | [alert addAction:[UIAlertAction actionWithTitle:@"设置" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
101 | if (@available(iOS 10, *)) {
102 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
103 | } else {
104 |
105 | #pragma clang diagnostic push
106 | #pragma clang diagnostic ignored "-Wdeprecated-declarations"
107 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
108 | #pragma clang diagnostic pop
109 |
110 | }
111 | }]];
112 | [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alert animated:YES completion:nil];
113 | return;
114 | }else {
115 | [self startRecord];
116 | }
117 | }
118 |
119 | - (void)endRecord:(UIGestureRecognizer *)recognizer {
120 | [self.audioRecorder stop];
121 | }
122 |
123 | #pragma mark - AVAudioRecorderDelegate
124 |
125 | - (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag {
126 |
127 | [self.displayLink removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; //remove from current runloop
128 | [UIView animateWithDuration:0.2 animations:^{
129 | self.microphoneBtn.transform = CGAffineTransformMakeScale(1, 1);
130 | self.microphoneBtn.alpha = 1;
131 | self.waveLayer.transform = CATransform3DMakeScale(0.1, 0.1, 0.1);
132 | } completion:^(BOOL finished) {
133 | self.waveLayer.hidden = YES;
134 | }];
135 | }
136 |
137 | #pragma mark - Private methods
138 |
139 | // 开始录音
140 | - (void)startRecord {
141 | if ([self.audioRecorder prepareToRecord]) {
142 | AudioServicesPlaySystemSound(1103);
143 | [UIView animateWithDuration:0.2 animations:^{
144 | self.microphoneBtn.transform = CGAffineTransformMakeScale(0.1, 0.1);
145 | self.microphoneBtn.alpha = 0;
146 | self.waveLayer.transform = CATransform3DIdentity;
147 | } completion:^(BOOL finished) {
148 | [self.audioRecorder record];
149 | [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
150 | self.waveLayer.hidden = NO;
151 | }];
152 | }
153 | }
154 |
155 | // 刷新layer布局
156 | - (void)displayWave {
157 |
158 | [self.audioRecorder updateMeters];//刷新音量数据
159 | double lowPassResults = pow(10, (0.05 * [self.audioRecorder peakPowerForChannel:0]));
160 | _waveHeight = CGRectGetHeight(self.bounds);
161 | _waveWidth = CGRectGetWidth(self.bounds);
162 | _waveMid = _waveWidth / 2.0f;
163 | _maxAmplitude = _waveHeight - 4.0f;
164 | _phase += _phaseShift;
165 | _amplitude = fmax(lowPassResults, _idleAmplitude);
166 |
167 | UIGraphicsBeginImageContext(self.frame.size);
168 | for(int i = 0; i < self.waves.count; i++) {
169 |
170 | UIBezierPath *wavelinePath = [UIBezierPath bezierPath];
171 | CGFloat progress = 1.0f - (CGFloat)i / kNumberOfWaves;
172 | CGFloat normedAmplitude = (1.5f * progress - 0.5f) * _amplitude;
173 |
174 | for(CGFloat x = 0; x < _waveWidth + _density; x += _density) {
175 |
176 | CGFloat scaling = -pow(x / _waveMid - 1, 2) + 1;
177 | CGFloat y = scaling * _maxAmplitude * normedAmplitude * sinf(2 * M_PI *(x / _waveWidth) * _frequency + _phase) + (_waveHeight * 0.5);
178 |
179 | if (x==0) {
180 | [wavelinePath moveToPoint:CGPointMake(x, y)];
181 | }
182 | else {
183 | [wavelinePath addLineToPoint:CGPointMake(x, y)];
184 | }
185 | }
186 |
187 | CAShapeLayer *waveline = [self.waves objectAtIndex:i];
188 | waveline.path = [wavelinePath CGPath];
189 | }
190 | UIGraphicsEndImageContext();
191 | }
192 |
193 | #pragma mark - Getters
194 |
195 | - (CADisplayLink *)displayLink {
196 | if (!_displayLink) {
197 | _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayWave)];
198 | }
199 | return _displayLink;
200 | }
201 |
202 | - (NSMutableArray *)waves {
203 | if (!_waves) {
204 | _waves = [NSMutableArray arrayWithCapacity:kNumberOfWaves];
205 | for (int i = 0; i < kNumberOfWaves; ++i) {
206 | CAShapeLayer *waveline = [CAShapeLayer layer];
207 | waveline.lineCap = kCALineCapButt;
208 | waveline.lineJoin = kCALineJoinRound;
209 | waveline.strokeColor = [[UIColor clearColor] CGColor];
210 | waveline.fillColor = [[UIColor clearColor] CGColor];
211 | [waveline setLineWidth:(i==0 ? _mainWaveWidth : _decorativeWavesWidth)];
212 | CGFloat progress = 1.0f - (CGFloat)i / kNumberOfWaves;
213 | CGFloat multiplier = MIN(1.0, (progress / 3.0f * 2.0f) + (1.0f / 3.0f));
214 | UIColor *color = [[UIColor greenColor] colorWithAlphaComponent:(i == 0 ? 1.0 : 1.0 * multiplier * 0.6)];
215 | waveline.strokeColor = color.CGColor;
216 | CAGradientLayer *gradientLayer = [CAGradientLayer layer];
217 | gradientLayer.frame = CGRectMake(0, 0, self.bounds.size.width, 200);
218 |
219 | //设置颜色
220 | [gradientLayer setColors:[NSArray arrayWithObjects:(id)[[UIColor cyanColor] CGColor],(id)[[UIColor greenColor] CGColor], nil]];
221 | //每种颜色最亮的位置
222 | [gradientLayer setLocations:@[@0,@1]];
223 | //渐变的方向StartPoint->EndPoint
224 | [gradientLayer setStartPoint:CGPointMake(0, 0.5)];
225 | [gradientLayer setEndPoint:CGPointMake(1, 0.5)];
226 |
227 | gradientLayer.mask = waveline;
228 | [self.waveLayer addSublayer:gradientLayer];
229 | [_waves addObject:waveline];
230 | }
231 | }
232 | return _waves;
233 | }
234 |
235 | - (CALayer *)waveLayer {
236 | if (!_waveLayer) {
237 | _waveLayer = [CALayer layer];
238 | }
239 | return _waveLayer;
240 | }
241 |
242 | - (AVAudioRecorder *)audioRecorder {
243 | if (!_audioRecorder) {
244 | NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];
245 | [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
246 | [recordSetting setValue:[NSNumber numberWithFloat:44100] forKey:AVSampleRateKey];
247 | [recordSetting setValue:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
248 | [recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
249 | [recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVEncoderAudioQualityKey];
250 | [recordSetting setValue:@(YES) forKey:AVLinearPCMIsFloatKey];
251 | NSString *strUrl = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
252 | NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/voice.aac", strUrl]];
253 | NSError *error;
254 | _audioRecorder = [[AVAudioRecorder alloc]initWithURL:url settings:recordSetting error:&error];
255 | //开启音量检测
256 | _audioRecorder.meteringEnabled = YES;
257 | _audioRecorder.delegate = self;
258 | }
259 | return _audioRecorder;
260 | }
261 |
262 | - (UIButton *)microphoneBtn {
263 | if (!_microphoneBtn) {
264 | _microphoneBtn = [UIButton buttonWithType:UIButtonTypeCustom];
265 | [_microphoneBtn setImage:[UIImage imageNamed:@"robot_microphone"] forState:UIControlStateNormal];
266 | [_microphoneBtn addTarget:self action:@selector(microphoneDidTap:) forControlEvents:UIControlEventTouchUpInside];
267 | }
268 | return _microphoneBtn;
269 | }
270 |
271 | @end
272 |
--------------------------------------------------------------------------------
/Pods/HandyFrame/UIView+LayoutMethods.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+LayoutMethods.m
3 | // TmallClient4iOS-Prime
4 | //
5 | // Created by casa on 14/12/8.
6 | // Copyright (c) 2014年 casa. All rights reserved.
7 | //
8 |
9 | #import "UIView+LayoutMethods.h"
10 | #import
11 |
12 | static void *kUIViewLayoutMethodPropertyBottomGap = &kUIViewLayoutMethodPropertyBottomGap;
13 | static void *kUIViewLayoutMethodPropertyTopGap = &kUIViewLayoutMethodPropertyTopGap;
14 | static void *kUIViewLayoutMethodPropertyLeftGap = &kUIViewLayoutMethodPropertyLeftGap;
15 | static void *kUIViewLayoutMethodPropertyRightGap = &kUIViewLayoutMethodPropertyRightGap;
16 |
17 | @implementation UIView (LayoutMethods)
18 |
19 | // coordinator getters
20 | - (CGFloat)ct_height
21 | {
22 | return self.frame.size.height;
23 | }
24 |
25 | - (CGFloat)ct_width
26 | {
27 | return self.frame.size.width;
28 | }
29 |
30 | - (CGFloat)ct_x
31 | {
32 | return self.frame.origin.x;
33 | }
34 |
35 | - (CGFloat)ct_y
36 | {
37 | return self.frame.origin.y;
38 | }
39 |
40 | - (CGSize)ct_size
41 | {
42 | return self.frame.size;
43 | }
44 |
45 | - (CGPoint)ct_origin
46 | {
47 | return self.frame.origin;
48 | }
49 |
50 | - (CGFloat)ct_centerX
51 | {
52 | return self.center.x;
53 | }
54 |
55 | - (CGFloat)ct_centerY
56 | {
57 | return self.center.y;
58 | }
59 |
60 | - (CGFloat)ct_left
61 | {
62 | return self.frame.origin.x;
63 | }
64 |
65 | - (CGFloat)ct_top
66 | {
67 | return self.frame.origin.y;
68 | }
69 |
70 | - (CGFloat)ct_bottom
71 | {
72 | return self.frame.size.height + self.frame.origin.y;
73 | }
74 |
75 | - (CGFloat)ct_right
76 | {
77 | return self.frame.size.width + self.frame.origin.x;
78 | }
79 |
80 | - (void)setCt_x:(CGFloat)x
81 | {
82 | self.frame = CGRectMake(x, self.frame.origin.y, self.frame.size.width, self.frame.size.height);
83 | }
84 |
85 | - (void)setCt_y:(CGFloat)y
86 | {
87 | self.frame = CGRectMake(self.frame.origin.x, y, self.frame.size.width, self.frame.size.height);
88 | }
89 |
90 | - (void)setCt_left:(CGFloat)left
91 | {
92 | self.ct_x = left;
93 | }
94 |
95 | - (void)setCt_top:(CGFloat)top
96 | {
97 | self.ct_y = top;
98 | }
99 |
100 | - (void)setCt_height:(CGFloat)height
101 | {
102 | CGRect newFrame = CGRectMake(self.ct_x, self.ct_y, self.ct_width, height);
103 | self.frame = newFrame;
104 | }
105 |
106 | - (void)heightEqualToView:(UIView *)view
107 | {
108 | self.ct_height = view.ct_height;
109 | }
110 |
111 | // width
112 | - (void)setCt_width:(CGFloat)width
113 | {
114 | CGRect newFrame = CGRectMake(self.ct_x, self.ct_y, width, self.ct_height);
115 | self.frame = newFrame;
116 | }
117 |
118 | - (void)widthEqualToView:(UIView *)view
119 | {
120 | self.ct_width = view.ct_width;
121 | }
122 |
123 | // center
124 | - (void)setCt_centerX:(CGFloat)centerX
125 | {
126 | CGPoint center = CGPointMake(self.ct_centerX, self.ct_centerY);
127 | center.x = centerX;
128 | self.center = center;
129 | }
130 |
131 | - (void)setCt_centerY:(CGFloat)centerY
132 | {
133 | CGPoint center = CGPointMake(self.ct_centerX, self.ct_centerY);
134 | center.y = centerY;
135 | self.center = center;
136 | }
137 |
138 | - (void)centerXEqualToView:(UIView *)view
139 | {
140 | UIView *superView = view.superview ? view.superview : view;
141 | CGPoint viewCenterPoint = [superView convertPoint:view.center toView:self.topSuperView];
142 | CGPoint centerPoint = [self.topSuperView convertPoint:viewCenterPoint toView:self.superview];
143 | self.ct_centerX = centerPoint.x;
144 | }
145 |
146 | - (void)centerYEqualToView:(UIView *)view
147 | {
148 | UIView *superView = view.superview ? view.superview : view;
149 | CGPoint viewCenterPoint = [superView convertPoint:view.center toView:self.topSuperView];
150 | CGPoint centerPoint = [self.topSuperView convertPoint:viewCenterPoint toView:self.superview];
151 | self.ct_centerY = centerPoint.y;
152 | }
153 |
154 | - (void)centerEqualToView:(UIView *)view
155 | {
156 | UIView *superView = view.superview ? view.superview : view;
157 | CGPoint viewCenterPoint = [superView convertPoint:view.center toView:self.topSuperView];
158 | CGPoint centerPoint = [self.topSuperView convertPoint:viewCenterPoint toView:self.superview];
159 | self.ct_centerX = centerPoint.x;
160 | self.ct_centerY = centerPoint.y;
161 | }
162 |
163 | // top, bottom, left, right -- Version 1.1.0
164 | - (void)fromTheTop:(CGFloat)distance ofView:(UIView *)view
165 | {
166 | [self bottom:distance FromView:view];
167 | }
168 |
169 | - (void)fromTheBottom:(CGFloat)distance ofView:(UIView *)view
170 | {
171 | [self top:distance FromView:view];
172 | }
173 |
174 | - (void)fromTheLeft:(CGFloat)distance ofView:(UIView *)view
175 | {
176 | [self left:distance FromView:view];
177 | }
178 |
179 | - (void)fromTheRight:(CGFloat)distance ofView:(UIView *)view
180 | {
181 | [self right:distance FromView:view];
182 | }
183 |
184 |
185 | - (void)fromTheRelativeTop:(CGFloat)distance ofView:(UIView *)view screenType:(UIScreenType)screenType
186 | {
187 | [self bottomRatio:distance FromView:view screenType:screenType];
188 | }
189 |
190 | - (void)fromTheRelativeBottom:(CGFloat)distance ofView:(UIView *)view screenType:(UIScreenType)screenType
191 | {
192 | [self topRatio:distance FromView:view screenType:screenType];
193 | }
194 |
195 | - (void)fromTheRelativeLeft:(CGFloat)distance ofView:(UIView *)view screenType:(UIScreenType)screenType
196 | {
197 | [self leftRatio:distance FromView:view screenType:screenType];
198 | }
199 |
200 | - (void)fromTheRelativeRight:(CGFloat)distance ofView:(UIView *)view screenType:(UIScreenType)screenType
201 | {
202 | [self rightRatio:distance FromView:view screenType:screenType];
203 | }
204 |
205 |
206 | - (void)relativeTopInContainer:(CGFloat)top shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType
207 | {
208 | [self topRatioInContainer:top shouldResize:shouldResize screenType:screenType];
209 | }
210 |
211 | - (void)relativeBottomInContainer:(CGFloat)bottom shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType
212 | {
213 | [self bottomRatioInContainer:bottom shouldResize:shouldResize screenType:screenType];
214 | }
215 |
216 | - (void)relativeLeftInContainer:(CGFloat)left shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType
217 | {
218 | [self leftRatioInContainer:left shouldResize:shouldResize screenType:screenType];
219 | }
220 |
221 | - (void)relativeRightInContainer:(CGFloat)right shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType
222 | {
223 | [self rightRatioInContainer:right shouldResize:shouldResize screenType:screenType];
224 | }
225 |
226 |
227 | // top, bottom, left, right -- Old Version
228 | - (void)top:(CGFloat)top FromView:(UIView *)view
229 | {
230 | UIView *superView = view.superview ? view.superview : view;
231 | CGPoint viewOrigin = [superView convertPoint:view.ct_origin toView:self.topSuperView];
232 | CGPoint newOrigin = [self.topSuperView convertPoint:viewOrigin toView:self.superview];
233 |
234 | self.ct_y = floorf(newOrigin.y + top + view.ct_height);
235 | }
236 |
237 | - (void)bottom:(CGFloat)bottom FromView:(UIView *)view
238 | {
239 | UIView *superView = view.superview ? view.superview : view;
240 | CGPoint viewOrigin = [superView convertPoint:view.ct_origin toView:self.topSuperView];
241 | CGPoint newOrigin = [self.topSuperView convertPoint:viewOrigin toView:self.superview];
242 |
243 | self.ct_y = newOrigin.y - bottom - self.ct_height;
244 | }
245 |
246 | - (void)left:(CGFloat)left FromView:(UIView *)view
247 | {
248 | UIView *superView = view.superview ? view.superview : view;
249 | CGPoint viewOrigin = [superView convertPoint:view.ct_origin toView:self.topSuperView];
250 | CGPoint newOrigin = [self.topSuperView convertPoint:viewOrigin toView:self.superview];
251 |
252 | self.ct_x = newOrigin.x - left - self.ct_width;
253 | }
254 |
255 | - (void)right:(CGFloat)right FromView:(UIView *)view
256 | {
257 | UIView *superView = view.superview ? view.superview : view;
258 | CGPoint viewOrigin = [superView convertPoint:view.ct_origin toView:self.topSuperView];
259 | CGPoint newOrigin = [self.topSuperView convertPoint:viewOrigin toView:self.superview];
260 |
261 | self.ct_x = newOrigin.x + right + view.ct_width;
262 | }
263 |
264 | - (void)topRatio:(CGFloat)top FromView:(UIView *)view screenType:(UIScreenType)screenType
265 | {
266 | CGFloat topRatio = top / screenType;
267 | CGFloat topValue = topRatio * self.superview.ct_width;
268 | [self top:topValue FromView:view];
269 | }
270 |
271 | - (void)bottomRatio:(CGFloat)bottom FromView:(UIView *)view screenType:(UIScreenType)screenType
272 | {
273 | CGFloat bottomRatio = bottom / screenType;
274 | CGFloat bottomValue = bottomRatio * self.superview.ct_width;
275 | [self bottom:bottomValue FromView:view];
276 | }
277 |
278 | - (void)leftRatio:(CGFloat)left FromView:(UIView *)view screenType:(UIScreenType)screenType
279 | {
280 | CGFloat leftRatio = left / screenType;
281 | CGFloat leftValue = leftRatio * self.superview.ct_width;
282 | [self left:leftValue FromView:view];
283 | }
284 |
285 | - (void)rightRatio:(CGFloat)right FromView:(UIView *)view screenType:(UIScreenType)screenType
286 | {
287 | CGFloat rightRatio = right / screenType;
288 | CGFloat rightValue = rightRatio * self.superview.ct_width;
289 | [self right:rightValue FromView:view];
290 | }
291 |
292 | - (void)topInContainer:(CGFloat)top shouldResize:(BOOL)shouldResize
293 | {
294 | if (shouldResize) {
295 | self.ct_height = self.ct_y - top + self.ct_height;
296 | }
297 | self.ct_y = top;
298 | }
299 |
300 | - (void)bottomInContainer:(CGFloat)bottom shouldResize:(BOOL)shouldResize
301 | {
302 | if (shouldResize) {
303 | self.ct_height = self.superview.ct_height - bottom - self.ct_y - self.safeAreaBottomGap;
304 | } else {
305 | self.ct_y = self.superview.ct_height - self.ct_height - bottom - self.safeAreaBottomGap;
306 | }
307 | }
308 |
309 | - (void)leftInContainer:(CGFloat)left shouldResize:(BOOL)shouldResize
310 | {
311 | if (shouldResize) {
312 | self.ct_width = self.ct_x - left + self.ct_width;
313 | }
314 | self.ct_x = left;
315 | }
316 |
317 | - (void)rightInContainer:(CGFloat)right shouldResize:(BOOL)shouldResize
318 | {
319 | if (shouldResize) {
320 | self.ct_width = self.superview.ct_width - right - self.ct_x;
321 | } else {
322 | self.ct_x = self.superview.ct_width - self.ct_width - right;
323 | }
324 | }
325 |
326 | - (void)topRatioInContainer:(CGFloat)top shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType
327 | {
328 | CGFloat topRatio = top / screenType;
329 | CGFloat topValue = topRatio * self.superview.ct_width;
330 | [self topInContainer:topValue shouldResize:shouldResize];
331 | }
332 |
333 | - (void)bottomRatioInContainer:(CGFloat)bottom shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType
334 | {
335 | CGFloat bottomRatio = bottom / screenType;
336 | CGFloat bottomValue = bottomRatio * self.superview.ct_width;
337 | [self bottomInContainer:bottomValue shouldResize:shouldResize];
338 | }
339 |
340 | - (void)leftRatioInContainer:(CGFloat)left shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType
341 | {
342 | CGFloat leftRatio = left / screenType;
343 | CGFloat leftValue = leftRatio * self.superview.ct_width;
344 | [self leftInContainer:leftValue shouldResize:shouldResize];
345 | }
346 |
347 | - (void)rightRatioInContainer:(CGFloat)right shouldResize:(BOOL)shouldResize screenType:(UIScreenType)screenType
348 | {
349 | CGFloat rightRatio = right / screenType;
350 | CGFloat rightValue = rightRatio * self.superview.ct_width;
351 | [self rightInContainer:rightValue shouldResize:shouldResize];
352 | }
353 |
354 | - (void)topEqualToView:(UIView *)view
355 | {
356 | UIView *superView = view.superview ? view.superview : view;
357 | CGPoint viewOrigin = [superView convertPoint:view.ct_origin toView:self.topSuperView];
358 | CGPoint newOrigin = [self.topSuperView convertPoint:viewOrigin toView:self.superview];
359 |
360 | self.ct_y = newOrigin.y;
361 | }
362 |
363 | - (void)bottomEqualToView:(UIView *)view
364 | {
365 | UIView *superView = view.superview ? view.superview : view;
366 | CGPoint viewOrigin = [superView convertPoint:view.ct_origin toView:self.topSuperView];
367 | CGPoint newOrigin = [self.topSuperView convertPoint:viewOrigin toView:self.superview];
368 |
369 | self.ct_y = newOrigin.y + view.ct_height - self.ct_height;
370 | }
371 |
372 | - (void)leftEqualToView:(UIView *)view
373 | {
374 | UIView *superView = view.superview ? view.superview : view;
375 | CGPoint viewOrigin = [superView convertPoint:view.ct_origin toView:self.topSuperView];
376 | CGPoint newOrigin = [self.topSuperView convertPoint:viewOrigin toView:self.superview];
377 |
378 | self.ct_x = newOrigin.x;
379 | }
380 |
381 | - (void)rightEqualToView:(UIView *)view
382 | {
383 | UIView *superView = view.superview ? view.superview : view;
384 | CGPoint viewOrigin = [superView convertPoint:view.ct_origin toView:self.topSuperView];
385 | CGPoint newOrigin = [self.topSuperView convertPoint:viewOrigin toView:self.superview];
386 |
387 | self.ct_x = newOrigin.x + view.ct_width - self.ct_width;
388 | }
389 |
390 | // size
391 | - (void)setCt_size:(CGSize)size
392 | {
393 | self.frame = CGRectMake(self.ct_x, self.ct_y, size.width, size.height);
394 | }
395 |
396 | - (void)setSize:(CGSize)size screenType:(UIScreenType)screenType
397 | {
398 | CGFloat ratio = SCREEN_WIDTH / screenType;
399 | self.frame = CGRectMake(self.ct_x, self.ct_y, size.width * ratio, size.height * ratio);
400 | }
401 |
402 | - (void)sizeEqualToView:(UIView *)view
403 | {
404 | self.frame = CGRectMake(self.ct_x, self.ct_y, view.ct_width, view.ct_height);
405 | }
406 |
407 | // imbueset
408 | - (void)fillWidth
409 | {
410 | self.ct_width = self.superview.ct_width;
411 | self.ct_x = 0;
412 | }
413 |
414 | - (void)fillHeight
415 | {
416 | self.ct_height = self.superview.ct_height;
417 | self.ct_y = 0;
418 | }
419 |
420 | - (void)fill
421 | {
422 | self.frame = CGRectMake(0, 0, self.superview.ct_width, self.superview.ct_height);
423 | }
424 |
425 | - (UIView *)topSuperView
426 | {
427 | UIView *topSuperView = self.superview;
428 |
429 | if (topSuperView == nil) {
430 | topSuperView = self;
431 | } else {
432 | while (topSuperView.superview) {
433 | topSuperView = topSuperView.superview;
434 | }
435 | }
436 |
437 | return topSuperView;
438 | }
439 |
440 | // iPhoneX adapt
441 | - (CGFloat)safeAreaBottomGap
442 | {
443 | NSNumber *gap = objc_getAssociatedObject(self, kUIViewLayoutMethodPropertyBottomGap);
444 | if (gap == nil) {
445 | if (@available(iOS 11, *)) {
446 | if (self.superview.safeAreaLayoutGuide.layoutFrame.size.height > 0) {
447 | gap = @((self.superview.ct_height - self.superview.safeAreaLayoutGuide.layoutFrame.origin.y - self.superview.safeAreaLayoutGuide.layoutFrame.size.height));
448 | } else {
449 | gap = nil;
450 | }
451 | } else {
452 | gap = @(0);
453 | }
454 | objc_setAssociatedObject(self, kUIViewLayoutMethodPropertyBottomGap, gap, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
455 | }
456 | return gap.floatValue;
457 | }
458 |
459 | - (CGFloat)safeAreaTopGap
460 | {
461 | NSNumber *gap = objc_getAssociatedObject(self, kUIViewLayoutMethodPropertyTopGap);
462 | if (gap == nil) {
463 | if (@available(iOS 11, *)) {
464 | gap = @(self.superview.safeAreaLayoutGuide.layoutFrame.origin.y);
465 | } else {
466 | gap = @(0);
467 | }
468 | objc_setAssociatedObject(self, kUIViewLayoutMethodPropertyTopGap, gap, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
469 | }
470 | return gap.floatValue;
471 | }
472 |
473 | - (CGFloat)safeAreaLeftGap
474 | {
475 | NSNumber *gap = objc_getAssociatedObject(self, kUIViewLayoutMethodPropertyLeftGap);
476 | if (gap == nil) {
477 | if (@available(iOS 11, *)) {
478 | gap = @(self.superview.safeAreaLayoutGuide.layoutFrame.origin.x);
479 | } else {
480 | gap = @(0);
481 | }
482 | objc_setAssociatedObject(self, kUIViewLayoutMethodPropertyLeftGap, gap, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
483 | }
484 | return gap.floatValue;
485 | }
486 |
487 | - (CGFloat)safeAreaRightGap
488 | {
489 | NSNumber *gap = objc_getAssociatedObject(self, kUIViewLayoutMethodPropertyRightGap);
490 | if (gap == nil) {
491 | if (@available(iOS 11, *)) {
492 | gap = @(self.superview.safeAreaLayoutGuide.layoutFrame.origin.x);
493 | } else {
494 | gap = @(0);
495 | }
496 | objc_setAssociatedObject(self, kUIViewLayoutMethodPropertyRightGap, gap, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
497 | }
498 | return gap.floatValue;
499 | }
500 |
501 | @end
502 |
--------------------------------------------------------------------------------
/DDSoundWave.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 48;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | C8BBDB391610959C901990EE /* libPods-DDSoundWave.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A49AE80629ACF61D5B8F174 /* libPods-DDSoundWave.a */; };
11 | F45427112077AD7B0080BD7E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F45427102077AD7B0080BD7E /* AppDelegate.m */; };
12 | F45427142077AD7B0080BD7E /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F45427132077AD7B0080BD7E /* ViewController.m */; };
13 | F45427172077AD7B0080BD7E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F45427152077AD7B0080BD7E /* Main.storyboard */; };
14 | F45427192077AD7B0080BD7E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F45427182077AD7B0080BD7E /* Assets.xcassets */; };
15 | F454271C2077AD7B0080BD7E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F454271A2077AD7B0080BD7E /* LaunchScreen.storyboard */; };
16 | F454271F2077AD7B0080BD7E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F454271E2077AD7B0080BD7E /* main.m */; };
17 | F454272B2077AF370080BD7E /* DDSoundWaveView.m in Sources */ = {isa = PBXBuildFile; fileRef = F454272A2077AF370080BD7E /* DDSoundWaveView.m */; };
18 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXFileReference section */
21 | 3A49AE80629ACF61D5B8F174 /* libPods-DDSoundWave.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DDSoundWave.a"; sourceTree = BUILT_PRODUCTS_DIR; };
22 | 9478F23101D2AEEF012CBA8C /* Pods-DDSoundWave.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DDSoundWave.debug.xcconfig"; path = "Pods/Target Support Files/Pods-DDSoundWave/Pods-DDSoundWave.debug.xcconfig"; sourceTree = ""; };
23 | AD0A19B03E5724A1D92AF8CC /* Pods-DDSoundWave.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DDSoundWave.release.xcconfig"; path = "Pods/Target Support Files/Pods-DDSoundWave/Pods-DDSoundWave.release.xcconfig"; sourceTree = ""; };
24 | F454270C2077AD7B0080BD7E /* DDSoundWave.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DDSoundWave.app; sourceTree = BUILT_PRODUCTS_DIR; };
25 | F454270F2077AD7B0080BD7E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
26 | F45427102077AD7B0080BD7E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
27 | F45427122077AD7B0080BD7E /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; };
28 | F45427132077AD7B0080BD7E /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; };
29 | F45427162077AD7B0080BD7E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
30 | F45427182077AD7B0080BD7E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
31 | F454271B2077AD7B0080BD7E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
32 | F454271D2077AD7B0080BD7E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
33 | F454271E2077AD7B0080BD7E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
34 | F45427292077AF370080BD7E /* DDSoundWaveView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DDSoundWaveView.h; sourceTree = ""; };
35 | F454272A2077AF370080BD7E /* DDSoundWaveView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DDSoundWaveView.m; sourceTree = ""; };
36 | /* End PBXFileReference section */
37 |
38 | /* Begin PBXFrameworksBuildPhase section */
39 | F45427092077AD7B0080BD7E /* Frameworks */ = {
40 | isa = PBXFrameworksBuildPhase;
41 | buildActionMask = 2147483647;
42 | files = (
43 | C8BBDB391610959C901990EE /* libPods-DDSoundWave.a in Frameworks */,
44 | );
45 | runOnlyForDeploymentPostprocessing = 0;
46 | };
47 | /* End PBXFrameworksBuildPhase section */
48 |
49 | /* Begin PBXGroup section */
50 | 3E55FA92ED53B5CF4A9B0B29 /* Pods */ = {
51 | isa = PBXGroup;
52 | children = (
53 | 9478F23101D2AEEF012CBA8C /* Pods-DDSoundWave.debug.xcconfig */,
54 | AD0A19B03E5724A1D92AF8CC /* Pods-DDSoundWave.release.xcconfig */,
55 | );
56 | name = Pods;
57 | sourceTree = "";
58 | };
59 | F45427032077AD7B0080BD7E = {
60 | isa = PBXGroup;
61 | children = (
62 | F454270E2077AD7B0080BD7E /* DDSoundWave */,
63 | F454270D2077AD7B0080BD7E /* Products */,
64 | 3E55FA92ED53B5CF4A9B0B29 /* Pods */,
65 | FF810D062662BD3EE88E12B7 /* Frameworks */,
66 | );
67 | sourceTree = "";
68 | };
69 | F454270D2077AD7B0080BD7E /* Products */ = {
70 | isa = PBXGroup;
71 | children = (
72 | F454270C2077AD7B0080BD7E /* DDSoundWave.app */,
73 | );
74 | name = Products;
75 | sourceTree = "";
76 | };
77 | F454270E2077AD7B0080BD7E /* DDSoundWave */ = {
78 | isa = PBXGroup;
79 | children = (
80 | F45427252077AD8F0080BD7E /* DDSoundWave */,
81 | F454270F2077AD7B0080BD7E /* AppDelegate.h */,
82 | F45427102077AD7B0080BD7E /* AppDelegate.m */,
83 | F45427122077AD7B0080BD7E /* ViewController.h */,
84 | F45427132077AD7B0080BD7E /* ViewController.m */,
85 | F45427152077AD7B0080BD7E /* Main.storyboard */,
86 | F45427182077AD7B0080BD7E /* Assets.xcassets */,
87 | F454271A2077AD7B0080BD7E /* LaunchScreen.storyboard */,
88 | F454271D2077AD7B0080BD7E /* Info.plist */,
89 | F454271E2077AD7B0080BD7E /* main.m */,
90 | );
91 | path = DDSoundWave;
92 | sourceTree = "";
93 | };
94 | F45427252077AD8F0080BD7E /* DDSoundWave */ = {
95 | isa = PBXGroup;
96 | children = (
97 | F45427292077AF370080BD7E /* DDSoundWaveView.h */,
98 | F454272A2077AF370080BD7E /* DDSoundWaveView.m */,
99 | );
100 | path = DDSoundWave;
101 | sourceTree = "";
102 | };
103 | FF810D062662BD3EE88E12B7 /* Frameworks */ = {
104 | isa = PBXGroup;
105 | children = (
106 | 3A49AE80629ACF61D5B8F174 /* libPods-DDSoundWave.a */,
107 | );
108 | name = Frameworks;
109 | sourceTree = "";
110 | };
111 | /* End PBXGroup section */
112 |
113 | /* Begin PBXNativeTarget section */
114 | F454270B2077AD7B0080BD7E /* DDSoundWave */ = {
115 | isa = PBXNativeTarget;
116 | buildConfigurationList = F45427222077AD7B0080BD7E /* Build configuration list for PBXNativeTarget "DDSoundWave" */;
117 | buildPhases = (
118 | DFDBD217A8DF49D298479745 /* [CP] Check Pods Manifest.lock */,
119 | F45427082077AD7B0080BD7E /* Sources */,
120 | F45427092077AD7B0080BD7E /* Frameworks */,
121 | F454270A2077AD7B0080BD7E /* Resources */,
122 | );
123 | buildRules = (
124 | );
125 | dependencies = (
126 | );
127 | name = DDSoundWave;
128 | productName = DDSoundWave;
129 | productReference = F454270C2077AD7B0080BD7E /* DDSoundWave.app */;
130 | productType = "com.apple.product-type.application";
131 | };
132 | /* End PBXNativeTarget section */
133 |
134 | /* Begin PBXProject section */
135 | F45427042077AD7B0080BD7E /* Project object */ = {
136 | isa = PBXProject;
137 | attributes = {
138 | LastUpgradeCheck = 0920;
139 | ORGANIZATIONNAME = Liuzhida;
140 | TargetAttributes = {
141 | F454270B2077AD7B0080BD7E = {
142 | CreatedOnToolsVersion = 9.2;
143 | ProvisioningStyle = Automatic;
144 | };
145 | };
146 | };
147 | buildConfigurationList = F45427072077AD7B0080BD7E /* Build configuration list for PBXProject "DDSoundWave" */;
148 | compatibilityVersion = "Xcode 8.0";
149 | developmentRegion = en;
150 | hasScannedForEncodings = 0;
151 | knownRegions = (
152 | en,
153 | Base,
154 | );
155 | mainGroup = F45427032077AD7B0080BD7E;
156 | productRefGroup = F454270D2077AD7B0080BD7E /* Products */;
157 | projectDirPath = "";
158 | projectRoot = "";
159 | targets = (
160 | F454270B2077AD7B0080BD7E /* DDSoundWave */,
161 | );
162 | };
163 | /* End PBXProject section */
164 |
165 | /* Begin PBXResourcesBuildPhase section */
166 | F454270A2077AD7B0080BD7E /* Resources */ = {
167 | isa = PBXResourcesBuildPhase;
168 | buildActionMask = 2147483647;
169 | files = (
170 | F454271C2077AD7B0080BD7E /* LaunchScreen.storyboard in Resources */,
171 | F45427192077AD7B0080BD7E /* Assets.xcassets in Resources */,
172 | F45427172077AD7B0080BD7E /* Main.storyboard in Resources */,
173 | );
174 | runOnlyForDeploymentPostprocessing = 0;
175 | };
176 | /* End PBXResourcesBuildPhase section */
177 |
178 | /* Begin PBXShellScriptBuildPhase section */
179 | DFDBD217A8DF49D298479745 /* [CP] Check Pods Manifest.lock */ = {
180 | isa = PBXShellScriptBuildPhase;
181 | buildActionMask = 2147483647;
182 | files = (
183 | );
184 | inputPaths = (
185 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
186 | "${PODS_ROOT}/Manifest.lock",
187 | );
188 | name = "[CP] Check Pods Manifest.lock";
189 | outputPaths = (
190 | "$(DERIVED_FILE_DIR)/Pods-DDSoundWave-checkManifestLockResult.txt",
191 | );
192 | runOnlyForDeploymentPostprocessing = 0;
193 | shellPath = /bin/sh;
194 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
195 | showEnvVarsInLog = 0;
196 | };
197 | /* End PBXShellScriptBuildPhase section */
198 |
199 | /* Begin PBXSourcesBuildPhase section */
200 | F45427082077AD7B0080BD7E /* Sources */ = {
201 | isa = PBXSourcesBuildPhase;
202 | buildActionMask = 2147483647;
203 | files = (
204 | F45427142077AD7B0080BD7E /* ViewController.m in Sources */,
205 | F454271F2077AD7B0080BD7E /* main.m in Sources */,
206 | F45427112077AD7B0080BD7E /* AppDelegate.m in Sources */,
207 | F454272B2077AF370080BD7E /* DDSoundWaveView.m in Sources */,
208 | );
209 | runOnlyForDeploymentPostprocessing = 0;
210 | };
211 | /* End PBXSourcesBuildPhase section */
212 |
213 | /* Begin PBXVariantGroup section */
214 | F45427152077AD7B0080BD7E /* Main.storyboard */ = {
215 | isa = PBXVariantGroup;
216 | children = (
217 | F45427162077AD7B0080BD7E /* Base */,
218 | );
219 | name = Main.storyboard;
220 | sourceTree = "";
221 | };
222 | F454271A2077AD7B0080BD7E /* LaunchScreen.storyboard */ = {
223 | isa = PBXVariantGroup;
224 | children = (
225 | F454271B2077AD7B0080BD7E /* Base */,
226 | );
227 | name = LaunchScreen.storyboard;
228 | sourceTree = "";
229 | };
230 | /* End PBXVariantGroup section */
231 |
232 | /* Begin XCBuildConfiguration section */
233 | F45427202077AD7B0080BD7E /* Debug */ = {
234 | isa = XCBuildConfiguration;
235 | buildSettings = {
236 | ALWAYS_SEARCH_USER_PATHS = NO;
237 | CLANG_ANALYZER_NONNULL = YES;
238 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
240 | CLANG_CXX_LIBRARY = "libc++";
241 | CLANG_ENABLE_MODULES = YES;
242 | CLANG_ENABLE_OBJC_ARC = YES;
243 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
244 | CLANG_WARN_BOOL_CONVERSION = YES;
245 | CLANG_WARN_COMMA = YES;
246 | CLANG_WARN_CONSTANT_CONVERSION = YES;
247 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
248 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
249 | CLANG_WARN_EMPTY_BODY = YES;
250 | CLANG_WARN_ENUM_CONVERSION = YES;
251 | CLANG_WARN_INFINITE_RECURSION = YES;
252 | CLANG_WARN_INT_CONVERSION = YES;
253 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
254 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
255 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
256 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
257 | CLANG_WARN_STRICT_PROTOTYPES = YES;
258 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
259 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
260 | CLANG_WARN_UNREACHABLE_CODE = YES;
261 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
262 | CODE_SIGN_IDENTITY = "iPhone Developer";
263 | COPY_PHASE_STRIP = NO;
264 | DEBUG_INFORMATION_FORMAT = dwarf;
265 | ENABLE_STRICT_OBJC_MSGSEND = YES;
266 | ENABLE_TESTABILITY = YES;
267 | GCC_C_LANGUAGE_STANDARD = gnu11;
268 | GCC_DYNAMIC_NO_PIC = NO;
269 | GCC_NO_COMMON_BLOCKS = YES;
270 | GCC_OPTIMIZATION_LEVEL = 0;
271 | GCC_PREPROCESSOR_DEFINITIONS = (
272 | "DEBUG=1",
273 | "$(inherited)",
274 | );
275 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
276 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
277 | GCC_WARN_UNDECLARED_SELECTOR = YES;
278 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
279 | GCC_WARN_UNUSED_FUNCTION = YES;
280 | GCC_WARN_UNUSED_VARIABLE = YES;
281 | IPHONEOS_DEPLOYMENT_TARGET = 11.2;
282 | MTL_ENABLE_DEBUG_INFO = YES;
283 | ONLY_ACTIVE_ARCH = YES;
284 | SDKROOT = iphoneos;
285 | };
286 | name = Debug;
287 | };
288 | F45427212077AD7B0080BD7E /* Release */ = {
289 | isa = XCBuildConfiguration;
290 | buildSettings = {
291 | ALWAYS_SEARCH_USER_PATHS = NO;
292 | CLANG_ANALYZER_NONNULL = YES;
293 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
294 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
295 | CLANG_CXX_LIBRARY = "libc++";
296 | CLANG_ENABLE_MODULES = YES;
297 | CLANG_ENABLE_OBJC_ARC = YES;
298 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
299 | CLANG_WARN_BOOL_CONVERSION = YES;
300 | CLANG_WARN_COMMA = YES;
301 | CLANG_WARN_CONSTANT_CONVERSION = YES;
302 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
303 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
304 | CLANG_WARN_EMPTY_BODY = YES;
305 | CLANG_WARN_ENUM_CONVERSION = YES;
306 | CLANG_WARN_INFINITE_RECURSION = YES;
307 | CLANG_WARN_INT_CONVERSION = YES;
308 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
309 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
310 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
311 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
312 | CLANG_WARN_STRICT_PROTOTYPES = YES;
313 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
314 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
315 | CLANG_WARN_UNREACHABLE_CODE = YES;
316 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
317 | CODE_SIGN_IDENTITY = "iPhone Developer";
318 | COPY_PHASE_STRIP = NO;
319 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
320 | ENABLE_NS_ASSERTIONS = NO;
321 | ENABLE_STRICT_OBJC_MSGSEND = YES;
322 | GCC_C_LANGUAGE_STANDARD = gnu11;
323 | GCC_NO_COMMON_BLOCKS = YES;
324 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
325 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
326 | GCC_WARN_UNDECLARED_SELECTOR = YES;
327 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
328 | GCC_WARN_UNUSED_FUNCTION = YES;
329 | GCC_WARN_UNUSED_VARIABLE = YES;
330 | IPHONEOS_DEPLOYMENT_TARGET = 11.2;
331 | MTL_ENABLE_DEBUG_INFO = NO;
332 | SDKROOT = iphoneos;
333 | VALIDATE_PRODUCT = YES;
334 | };
335 | name = Release;
336 | };
337 | F45427232077AD7B0080BD7E /* Debug */ = {
338 | isa = XCBuildConfiguration;
339 | baseConfigurationReference = 9478F23101D2AEEF012CBA8C /* Pods-DDSoundWave.debug.xcconfig */;
340 | buildSettings = {
341 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
342 | CODE_SIGN_STYLE = Automatic;
343 | INFOPLIST_FILE = DDSoundWave/Info.plist;
344 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
345 | PRODUCT_BUNDLE_IDENTIFIER = com.teaker.DDSoundWave;
346 | PRODUCT_NAME = "$(TARGET_NAME)";
347 | TARGETED_DEVICE_FAMILY = "1,2";
348 | };
349 | name = Debug;
350 | };
351 | F45427242077AD7B0080BD7E /* Release */ = {
352 | isa = XCBuildConfiguration;
353 | baseConfigurationReference = AD0A19B03E5724A1D92AF8CC /* Pods-DDSoundWave.release.xcconfig */;
354 | buildSettings = {
355 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
356 | CODE_SIGN_STYLE = Automatic;
357 | INFOPLIST_FILE = DDSoundWave/Info.plist;
358 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
359 | PRODUCT_BUNDLE_IDENTIFIER = com.teaker.DDSoundWave;
360 | PRODUCT_NAME = "$(TARGET_NAME)";
361 | TARGETED_DEVICE_FAMILY = "1,2";
362 | };
363 | name = Release;
364 | };
365 | /* End XCBuildConfiguration section */
366 |
367 | /* Begin XCConfigurationList section */
368 | F45427072077AD7B0080BD7E /* Build configuration list for PBXProject "DDSoundWave" */ = {
369 | isa = XCConfigurationList;
370 | buildConfigurations = (
371 | F45427202077AD7B0080BD7E /* Debug */,
372 | F45427212077AD7B0080BD7E /* Release */,
373 | );
374 | defaultConfigurationIsVisible = 0;
375 | defaultConfigurationName = Release;
376 | };
377 | F45427222077AD7B0080BD7E /* Build configuration list for PBXNativeTarget "DDSoundWave" */ = {
378 | isa = XCConfigurationList;
379 | buildConfigurations = (
380 | F45427232077AD7B0080BD7E /* Debug */,
381 | F45427242077AD7B0080BD7E /* Release */,
382 | );
383 | defaultConfigurationIsVisible = 0;
384 | defaultConfigurationName = Release;
385 | };
386 | /* End XCConfigurationList section */
387 | };
388 | rootObject = F45427042077AD7B0080BD7E /* Project object */;
389 | }
390 |
--------------------------------------------------------------------------------
/Pods/Pods.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 48;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 24C39CC17A8A9DC1D27BA1020CABF7B5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; };
11 | 3EBD72F4F64A7DE45A88ECCC7B12FD6A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */; };
12 | 4355C731060DC668A71EBCBCA3435BDC /* HandyFrame-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B0B9C09E78A626A37B1A883D18D3DCBA /* HandyFrame-dummy.m */; };
13 | 59DC88A66752FF47806374DAAEE95C83 /* Pods-DDSoundWave-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FB816112A243C759A7A31ED883EBF85 /* Pods-DDSoundWave-dummy.m */; };
14 | 5CD9DA56144180C5943C9D9BE8D1203E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; };
15 | 69CC78FF344D0EB2050719582B80EF34 /* UIView+LayoutMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 87C85B6E2679684C51E6172A07E8489A /* UIView+LayoutMethods.h */; settings = {ATTRIBUTES = (Project, ); }; };
16 | D274E160F43659FDA92C800617926694 /* UIView+LayoutMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B36784F83548EC019CB39A0E54F66DF /* UIView+LayoutMethods.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; };
17 | /* End PBXBuildFile section */
18 |
19 | /* Begin PBXContainerItemProxy section */
20 | D02FC4FA97BDEE66A727A2AD96D789FE /* PBXContainerItemProxy */ = {
21 | isa = PBXContainerItemProxy;
22 | containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
23 | proxyType = 1;
24 | remoteGlobalIDString = BAE53AD0B7382177F4D30E0299A670EC;
25 | remoteInfo = HandyFrame;
26 | };
27 | /* End PBXContainerItemProxy section */
28 |
29 | /* Begin PBXFileReference section */
30 | 02B07F17ACB690F13F3D7DE7DD7B9D67 /* Pods-DDSoundWave-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DDSoundWave-acknowledgements.markdown"; sourceTree = ""; };
31 | 1634BE4D23142DE010346397E4E64EAC /* libHandyFrame.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libHandyFrame.a; path = libHandyFrame.a; sourceTree = BUILT_PRODUCTS_DIR; };
32 | 2037B6B54C4D7CD5E2C07808082CF69B /* libPods-DDSoundWave.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-DDSoundWave.a"; path = "libPods-DDSoundWave.a"; sourceTree = BUILT_PRODUCTS_DIR; };
33 | 2A5B8C18C9E120F4066619D843C839F9 /* HandyFrame-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HandyFrame-prefix.pch"; sourceTree = ""; };
34 | 42D78691B7B918E1DECF68FC1FCA52C1 /* Pods-DDSoundWave.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DDSoundWave.release.xcconfig"; sourceTree = ""; };
35 | 5B36784F83548EC019CB39A0E54F66DF /* UIView+LayoutMethods.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIView+LayoutMethods.m"; sourceTree = ""; };
36 | 5FB816112A243C759A7A31ED883EBF85 /* Pods-DDSoundWave-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DDSoundWave-dummy.m"; sourceTree = ""; };
37 | 69112309F43C9857FD681701C6EC79A9 /* Pods-DDSoundWave-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DDSoundWave-resources.sh"; sourceTree = ""; };
38 | 6B78E027D368C197BC6742EE220D8BEC /* Pods-DDSoundWave-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DDSoundWave-acknowledgements.plist"; sourceTree = ""; };
39 | 85B261FADBD2E6C7EEB9A4D0FD5DE8F5 /* Pods-DDSoundWave.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DDSoundWave.debug.xcconfig"; sourceTree = ""; };
40 | 87C85B6E2679684C51E6172A07E8489A /* UIView+LayoutMethods.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIView+LayoutMethods.h"; sourceTree = ""; };
41 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
42 | 9ED10D0D4FCB26490B21AC4A752CAB61 /* Pods-DDSoundWave-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DDSoundWave-frameworks.sh"; sourceTree = ""; };
43 | B0B9C09E78A626A37B1A883D18D3DCBA /* HandyFrame-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HandyFrame-dummy.m"; sourceTree = ""; };
44 | B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
45 | D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
46 | DF1040FD41B01945302B0F15CE2ED9B2 /* HandyFrame.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HandyFrame.xcconfig; sourceTree = ""; };
47 | /* End PBXFileReference section */
48 |
49 | /* Begin PBXFrameworksBuildPhase section */
50 | DF0A993F33D4350180B7AE62D9534F91 /* Frameworks */ = {
51 | isa = PBXFrameworksBuildPhase;
52 | buildActionMask = 2147483647;
53 | files = (
54 | 24C39CC17A8A9DC1D27BA1020CABF7B5 /* Foundation.framework in Frameworks */,
55 | );
56 | runOnlyForDeploymentPostprocessing = 0;
57 | };
58 | EF69F431313DE5FFFBE89E40A7F31F98 /* Frameworks */ = {
59 | isa = PBXFrameworksBuildPhase;
60 | buildActionMask = 2147483647;
61 | files = (
62 | 5CD9DA56144180C5943C9D9BE8D1203E /* Foundation.framework in Frameworks */,
63 | 3EBD72F4F64A7DE45A88ECCC7B12FD6A /* UIKit.framework in Frameworks */,
64 | );
65 | runOnlyForDeploymentPostprocessing = 0;
66 | };
67 | /* End PBXFrameworksBuildPhase section */
68 |
69 | /* Begin PBXGroup section */
70 | 3F213B91184573F93B3996EFFBA74DE9 /* Pods */ = {
71 | isa = PBXGroup;
72 | children = (
73 | 68753309B2BE6DF798107BE785DE08CF /* HandyFrame */,
74 | );
75 | name = Pods;
76 | sourceTree = "";
77 | };
78 | 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = {
79 | isa = PBXGroup;
80 | children = (
81 | 438B396F6B4147076630CAEFE34282C1 /* iOS */,
82 | );
83 | name = Frameworks;
84 | sourceTree = "";
85 | };
86 | 438B396F6B4147076630CAEFE34282C1 /* iOS */ = {
87 | isa = PBXGroup;
88 | children = (
89 | D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */,
90 | B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */,
91 | );
92 | name = iOS;
93 | sourceTree = "";
94 | };
95 | 45F6FCC9E754DB0590D49F1B89B87E00 /* Targets Support Files */ = {
96 | isa = PBXGroup;
97 | children = (
98 | AA776558A40A1DCFF1658C7E079B9B8A /* Pods-DDSoundWave */,
99 | );
100 | name = "Targets Support Files";
101 | sourceTree = "";
102 | };
103 | 68753309B2BE6DF798107BE785DE08CF /* HandyFrame */ = {
104 | isa = PBXGroup;
105 | children = (
106 | 87C85B6E2679684C51E6172A07E8489A /* UIView+LayoutMethods.h */,
107 | 5B36784F83548EC019CB39A0E54F66DF /* UIView+LayoutMethods.m */,
108 | 74292D9AF0E86FD5CB6F5F879FFBCA93 /* Support Files */,
109 | );
110 | name = HandyFrame;
111 | path = HandyFrame;
112 | sourceTree = "";
113 | };
114 | 74292D9AF0E86FD5CB6F5F879FFBCA93 /* Support Files */ = {
115 | isa = PBXGroup;
116 | children = (
117 | DF1040FD41B01945302B0F15CE2ED9B2 /* HandyFrame.xcconfig */,
118 | B0B9C09E78A626A37B1A883D18D3DCBA /* HandyFrame-dummy.m */,
119 | 2A5B8C18C9E120F4066619D843C839F9 /* HandyFrame-prefix.pch */,
120 | );
121 | name = "Support Files";
122 | path = "../Target Support Files/HandyFrame";
123 | sourceTree = "";
124 | };
125 | 7DB346D0F39D3F0E887471402A8071AB = {
126 | isa = PBXGroup;
127 | children = (
128 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */,
129 | 433CD3331B6C3787F473C941B61FC68F /* Frameworks */,
130 | 3F213B91184573F93B3996EFFBA74DE9 /* Pods */,
131 | CF489E2924B3A5D03766845F97EFD5D8 /* Products */,
132 | 45F6FCC9E754DB0590D49F1B89B87E00 /* Targets Support Files */,
133 | );
134 | sourceTree = "";
135 | };
136 | AA776558A40A1DCFF1658C7E079B9B8A /* Pods-DDSoundWave */ = {
137 | isa = PBXGroup;
138 | children = (
139 | 02B07F17ACB690F13F3D7DE7DD7B9D67 /* Pods-DDSoundWave-acknowledgements.markdown */,
140 | 6B78E027D368C197BC6742EE220D8BEC /* Pods-DDSoundWave-acknowledgements.plist */,
141 | 5FB816112A243C759A7A31ED883EBF85 /* Pods-DDSoundWave-dummy.m */,
142 | 9ED10D0D4FCB26490B21AC4A752CAB61 /* Pods-DDSoundWave-frameworks.sh */,
143 | 69112309F43C9857FD681701C6EC79A9 /* Pods-DDSoundWave-resources.sh */,
144 | 85B261FADBD2E6C7EEB9A4D0FD5DE8F5 /* Pods-DDSoundWave.debug.xcconfig */,
145 | 42D78691B7B918E1DECF68FC1FCA52C1 /* Pods-DDSoundWave.release.xcconfig */,
146 | );
147 | name = "Pods-DDSoundWave";
148 | path = "Target Support Files/Pods-DDSoundWave";
149 | sourceTree = "";
150 | };
151 | CF489E2924B3A5D03766845F97EFD5D8 /* Products */ = {
152 | isa = PBXGroup;
153 | children = (
154 | 1634BE4D23142DE010346397E4E64EAC /* libHandyFrame.a */,
155 | 2037B6B54C4D7CD5E2C07808082CF69B /* libPods-DDSoundWave.a */,
156 | );
157 | name = Products;
158 | sourceTree = "";
159 | };
160 | /* End PBXGroup section */
161 |
162 | /* Begin PBXHeadersBuildPhase section */
163 | 05B5B31A01953C2E0D9A2C478C34B6A6 /* Headers */ = {
164 | isa = PBXHeadersBuildPhase;
165 | buildActionMask = 2147483647;
166 | files = (
167 | 69CC78FF344D0EB2050719582B80EF34 /* UIView+LayoutMethods.h in Headers */,
168 | );
169 | runOnlyForDeploymentPostprocessing = 0;
170 | };
171 | /* End PBXHeadersBuildPhase section */
172 |
173 | /* Begin PBXNativeTarget section */
174 | 90036243922F64590A6EA30C70307379 /* Pods-DDSoundWave */ = {
175 | isa = PBXNativeTarget;
176 | buildConfigurationList = 07A5A7DD7043172C5D75FA7263C627AF /* Build configuration list for PBXNativeTarget "Pods-DDSoundWave" */;
177 | buildPhases = (
178 | 6BB6BCC5874B5C3E987926F77531529E /* Sources */,
179 | DF0A993F33D4350180B7AE62D9534F91 /* Frameworks */,
180 | );
181 | buildRules = (
182 | );
183 | dependencies = (
184 | F19DF0959B21B451377FF0701DA9B365 /* PBXTargetDependency */,
185 | );
186 | name = "Pods-DDSoundWave";
187 | productName = "Pods-DDSoundWave";
188 | productReference = 2037B6B54C4D7CD5E2C07808082CF69B /* libPods-DDSoundWave.a */;
189 | productType = "com.apple.product-type.library.static";
190 | };
191 | BAE53AD0B7382177F4D30E0299A670EC /* HandyFrame */ = {
192 | isa = PBXNativeTarget;
193 | buildConfigurationList = 9B08945FB2F124B45205E941B00014DF /* Build configuration list for PBXNativeTarget "HandyFrame" */;
194 | buildPhases = (
195 | E913FAAE82539584E01F5E3860AB6109 /* Sources */,
196 | EF69F431313DE5FFFBE89E40A7F31F98 /* Frameworks */,
197 | 05B5B31A01953C2E0D9A2C478C34B6A6 /* Headers */,
198 | );
199 | buildRules = (
200 | );
201 | dependencies = (
202 | );
203 | name = HandyFrame;
204 | productName = HandyFrame;
205 | productReference = 1634BE4D23142DE010346397E4E64EAC /* libHandyFrame.a */;
206 | productType = "com.apple.product-type.library.static";
207 | };
208 | /* End PBXNativeTarget section */
209 |
210 | /* Begin PBXProject section */
211 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = {
212 | isa = PBXProject;
213 | attributes = {
214 | LastSwiftUpdateCheck = 0930;
215 | LastUpgradeCheck = 0930;
216 | };
217 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */;
218 | compatibilityVersion = "Xcode 3.2";
219 | developmentRegion = English;
220 | hasScannedForEncodings = 0;
221 | knownRegions = (
222 | en,
223 | );
224 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB;
225 | productRefGroup = CF489E2924B3A5D03766845F97EFD5D8 /* Products */;
226 | projectDirPath = "";
227 | projectRoot = "";
228 | targets = (
229 | BAE53AD0B7382177F4D30E0299A670EC /* HandyFrame */,
230 | 90036243922F64590A6EA30C70307379 /* Pods-DDSoundWave */,
231 | );
232 | };
233 | /* End PBXProject section */
234 |
235 | /* Begin PBXSourcesBuildPhase section */
236 | 6BB6BCC5874B5C3E987926F77531529E /* Sources */ = {
237 | isa = PBXSourcesBuildPhase;
238 | buildActionMask = 2147483647;
239 | files = (
240 | 59DC88A66752FF47806374DAAEE95C83 /* Pods-DDSoundWave-dummy.m in Sources */,
241 | );
242 | runOnlyForDeploymentPostprocessing = 0;
243 | };
244 | E913FAAE82539584E01F5E3860AB6109 /* Sources */ = {
245 | isa = PBXSourcesBuildPhase;
246 | buildActionMask = 2147483647;
247 | files = (
248 | 4355C731060DC668A71EBCBCA3435BDC /* HandyFrame-dummy.m in Sources */,
249 | D274E160F43659FDA92C800617926694 /* UIView+LayoutMethods.m in Sources */,
250 | );
251 | runOnlyForDeploymentPostprocessing = 0;
252 | };
253 | /* End PBXSourcesBuildPhase section */
254 |
255 | /* Begin PBXTargetDependency section */
256 | F19DF0959B21B451377FF0701DA9B365 /* PBXTargetDependency */ = {
257 | isa = PBXTargetDependency;
258 | name = HandyFrame;
259 | target = BAE53AD0B7382177F4D30E0299A670EC /* HandyFrame */;
260 | targetProxy = D02FC4FA97BDEE66A727A2AD96D789FE /* PBXContainerItemProxy */;
261 | };
262 | /* End PBXTargetDependency section */
263 |
264 | /* Begin XCBuildConfiguration section */
265 | 30D948AE62C04225F8DEF8734A4C5A26 /* Release */ = {
266 | isa = XCBuildConfiguration;
267 | buildSettings = {
268 | ALWAYS_SEARCH_USER_PATHS = NO;
269 | CLANG_ANALYZER_NONNULL = YES;
270 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
271 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
272 | CLANG_CXX_LIBRARY = "libc++";
273 | CLANG_ENABLE_MODULES = YES;
274 | CLANG_ENABLE_OBJC_ARC = YES;
275 | CLANG_ENABLE_OBJC_WEAK = YES;
276 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
277 | CLANG_WARN_BOOL_CONVERSION = YES;
278 | CLANG_WARN_COMMA = YES;
279 | CLANG_WARN_CONSTANT_CONVERSION = YES;
280 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
281 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
282 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
283 | CLANG_WARN_EMPTY_BODY = YES;
284 | CLANG_WARN_ENUM_CONVERSION = YES;
285 | CLANG_WARN_INFINITE_RECURSION = YES;
286 | CLANG_WARN_INT_CONVERSION = YES;
287 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
288 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
289 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
290 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
291 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
292 | CLANG_WARN_STRICT_PROTOTYPES = YES;
293 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
294 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
295 | CLANG_WARN_UNREACHABLE_CODE = YES;
296 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
297 | CODE_SIGNING_ALLOWED = NO;
298 | CODE_SIGNING_REQUIRED = NO;
299 | COPY_PHASE_STRIP = NO;
300 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
301 | ENABLE_NS_ASSERTIONS = NO;
302 | ENABLE_STRICT_OBJC_MSGSEND = YES;
303 | GCC_C_LANGUAGE_STANDARD = gnu11;
304 | GCC_NO_COMMON_BLOCKS = YES;
305 | GCC_PREPROCESSOR_DEFINITIONS = (
306 | "POD_CONFIGURATION_RELEASE=1",
307 | "$(inherited)",
308 | );
309 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
310 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
311 | GCC_WARN_UNDECLARED_SELECTOR = YES;
312 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
313 | GCC_WARN_UNUSED_FUNCTION = YES;
314 | GCC_WARN_UNUSED_VARIABLE = YES;
315 | IPHONEOS_DEPLOYMENT_TARGET = 11.2;
316 | MTL_ENABLE_DEBUG_INFO = NO;
317 | PRODUCT_NAME = "$(TARGET_NAME)";
318 | STRIP_INSTALLED_PRODUCT = NO;
319 | SYMROOT = "${SRCROOT}/../build";
320 | };
321 | name = Release;
322 | };
323 | 47CD481309D681D8ABEBBC35109E8D5C /* Debug */ = {
324 | isa = XCBuildConfiguration;
325 | baseConfigurationReference = DF1040FD41B01945302B0F15CE2ED9B2 /* HandyFrame.xcconfig */;
326 | buildSettings = {
327 | CODE_SIGN_IDENTITY = "iPhone Developer";
328 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
329 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
330 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
331 | GCC_PREFIX_HEADER = "Target Support Files/HandyFrame/HandyFrame-prefix.pch";
332 | IPHONEOS_DEPLOYMENT_TARGET = 5.0;
333 | OTHER_LDFLAGS = "";
334 | OTHER_LIBTOOLFLAGS = "";
335 | PRIVATE_HEADERS_FOLDER_PATH = "";
336 | PRODUCT_MODULE_NAME = HandyFrame;
337 | PRODUCT_NAME = HandyFrame;
338 | PUBLIC_HEADERS_FOLDER_PATH = "";
339 | SDKROOT = iphoneos;
340 | SKIP_INSTALL = YES;
341 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
342 | TARGETED_DEVICE_FAMILY = "1,2";
343 | };
344 | name = Debug;
345 | };
346 | 5C38D8B9444AFF4F3C33295CB592FE9C /* Release */ = {
347 | isa = XCBuildConfiguration;
348 | baseConfigurationReference = 42D78691B7B918E1DECF68FC1FCA52C1 /* Pods-DDSoundWave.release.xcconfig */;
349 | buildSettings = {
350 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
351 | CLANG_ENABLE_OBJC_WEAK = NO;
352 | CODE_SIGN_IDENTITY = "iPhone Developer";
353 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
354 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
355 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
356 | IPHONEOS_DEPLOYMENT_TARGET = 11.2;
357 | MACH_O_TYPE = staticlib;
358 | OTHER_LDFLAGS = "";
359 | OTHER_LIBTOOLFLAGS = "";
360 | PODS_ROOT = "$(SRCROOT)";
361 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
362 | SDKROOT = iphoneos;
363 | SKIP_INSTALL = YES;
364 | TARGETED_DEVICE_FAMILY = "1,2";
365 | VALIDATE_PRODUCT = YES;
366 | };
367 | name = Release;
368 | };
369 | 6135E95808165004B3546FB8DAC39422 /* Debug */ = {
370 | isa = XCBuildConfiguration;
371 | baseConfigurationReference = 85B261FADBD2E6C7EEB9A4D0FD5DE8F5 /* Pods-DDSoundWave.debug.xcconfig */;
372 | buildSettings = {
373 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
374 | CLANG_ENABLE_OBJC_WEAK = NO;
375 | CODE_SIGN_IDENTITY = "iPhone Developer";
376 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
377 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
378 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
379 | IPHONEOS_DEPLOYMENT_TARGET = 11.2;
380 | MACH_O_TYPE = staticlib;
381 | OTHER_LDFLAGS = "";
382 | OTHER_LIBTOOLFLAGS = "";
383 | PODS_ROOT = "$(SRCROOT)";
384 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
385 | SDKROOT = iphoneos;
386 | SKIP_INSTALL = YES;
387 | TARGETED_DEVICE_FAMILY = "1,2";
388 | };
389 | name = Debug;
390 | };
391 | 9E88537B08ED4D6EB44DBA7BC8D56A35 /* Debug */ = {
392 | isa = XCBuildConfiguration;
393 | buildSettings = {
394 | ALWAYS_SEARCH_USER_PATHS = NO;
395 | CLANG_ANALYZER_NONNULL = YES;
396 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
397 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
398 | CLANG_CXX_LIBRARY = "libc++";
399 | CLANG_ENABLE_MODULES = YES;
400 | CLANG_ENABLE_OBJC_ARC = YES;
401 | CLANG_ENABLE_OBJC_WEAK = YES;
402 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
403 | CLANG_WARN_BOOL_CONVERSION = YES;
404 | CLANG_WARN_COMMA = YES;
405 | CLANG_WARN_CONSTANT_CONVERSION = YES;
406 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
407 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
408 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
409 | CLANG_WARN_EMPTY_BODY = YES;
410 | CLANG_WARN_ENUM_CONVERSION = YES;
411 | CLANG_WARN_INFINITE_RECURSION = YES;
412 | CLANG_WARN_INT_CONVERSION = YES;
413 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
414 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
415 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
416 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
417 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
418 | CLANG_WARN_STRICT_PROTOTYPES = YES;
419 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
420 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
421 | CLANG_WARN_UNREACHABLE_CODE = YES;
422 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
423 | CODE_SIGNING_ALLOWED = NO;
424 | CODE_SIGNING_REQUIRED = NO;
425 | COPY_PHASE_STRIP = NO;
426 | DEBUG_INFORMATION_FORMAT = dwarf;
427 | ENABLE_STRICT_OBJC_MSGSEND = YES;
428 | ENABLE_TESTABILITY = YES;
429 | GCC_C_LANGUAGE_STANDARD = gnu11;
430 | GCC_DYNAMIC_NO_PIC = NO;
431 | GCC_NO_COMMON_BLOCKS = YES;
432 | GCC_OPTIMIZATION_LEVEL = 0;
433 | GCC_PREPROCESSOR_DEFINITIONS = (
434 | "POD_CONFIGURATION_DEBUG=1",
435 | "DEBUG=1",
436 | "$(inherited)",
437 | );
438 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
439 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
440 | GCC_WARN_UNDECLARED_SELECTOR = YES;
441 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
442 | GCC_WARN_UNUSED_FUNCTION = YES;
443 | GCC_WARN_UNUSED_VARIABLE = YES;
444 | IPHONEOS_DEPLOYMENT_TARGET = 11.2;
445 | MTL_ENABLE_DEBUG_INFO = YES;
446 | ONLY_ACTIVE_ARCH = YES;
447 | PRODUCT_NAME = "$(TARGET_NAME)";
448 | STRIP_INSTALLED_PRODUCT = NO;
449 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
450 | SYMROOT = "${SRCROOT}/../build";
451 | };
452 | name = Debug;
453 | };
454 | D131A49BAE09969DA88F3276799DA470 /* Release */ = {
455 | isa = XCBuildConfiguration;
456 | baseConfigurationReference = DF1040FD41B01945302B0F15CE2ED9B2 /* HandyFrame.xcconfig */;
457 | buildSettings = {
458 | CODE_SIGN_IDENTITY = "iPhone Developer";
459 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
460 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
461 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
462 | GCC_PREFIX_HEADER = "Target Support Files/HandyFrame/HandyFrame-prefix.pch";
463 | IPHONEOS_DEPLOYMENT_TARGET = 5.0;
464 | OTHER_LDFLAGS = "";
465 | OTHER_LIBTOOLFLAGS = "";
466 | PRIVATE_HEADERS_FOLDER_PATH = "";
467 | PRODUCT_MODULE_NAME = HandyFrame;
468 | PRODUCT_NAME = HandyFrame;
469 | PUBLIC_HEADERS_FOLDER_PATH = "";
470 | SDKROOT = iphoneos;
471 | SKIP_INSTALL = YES;
472 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) ";
473 | TARGETED_DEVICE_FAMILY = "1,2";
474 | VALIDATE_PRODUCT = YES;
475 | };
476 | name = Release;
477 | };
478 | /* End XCBuildConfiguration section */
479 |
480 | /* Begin XCConfigurationList section */
481 | 07A5A7DD7043172C5D75FA7263C627AF /* Build configuration list for PBXNativeTarget "Pods-DDSoundWave" */ = {
482 | isa = XCConfigurationList;
483 | buildConfigurations = (
484 | 6135E95808165004B3546FB8DAC39422 /* Debug */,
485 | 5C38D8B9444AFF4F3C33295CB592FE9C /* Release */,
486 | );
487 | defaultConfigurationIsVisible = 0;
488 | defaultConfigurationName = Release;
489 | };
490 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = {
491 | isa = XCConfigurationList;
492 | buildConfigurations = (
493 | 9E88537B08ED4D6EB44DBA7BC8D56A35 /* Debug */,
494 | 30D948AE62C04225F8DEF8734A4C5A26 /* Release */,
495 | );
496 | defaultConfigurationIsVisible = 0;
497 | defaultConfigurationName = Release;
498 | };
499 | 9B08945FB2F124B45205E941B00014DF /* Build configuration list for PBXNativeTarget "HandyFrame" */ = {
500 | isa = XCConfigurationList;
501 | buildConfigurations = (
502 | 47CD481309D681D8ABEBBC35109E8D5C /* Debug */,
503 | D131A49BAE09969DA88F3276799DA470 /* Release */,
504 | );
505 | defaultConfigurationIsVisible = 0;
506 | defaultConfigurationName = Release;
507 | };
508 | /* End XCConfigurationList section */
509 | };
510 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */;
511 | }
512 |
--------------------------------------------------------------------------------