Compare commits
48 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c4cdee6a36 | |||
| 553e235389 | |||
| cb4bc7ecd7 | |||
| 8a4176470b | |||
| d2a273d5ca | |||
| 40fb22d7ff | |||
| 3e6b2fed63 | |||
| a146adf67e | |||
| 603155e62d | |||
| 1a10a75797 | |||
| 001605f85f | |||
| 5d17f1ece9 | |||
| c1d9c432aa | |||
| 31fd76852b | |||
| 8a8a527cdd | |||
| 7d39995a9e | |||
| 926af87bae | |||
| 255eacebdf | |||
| 42cf015108 | |||
| a9c3563112 | |||
| d7dc0523e0 | |||
| f2ef50c1eb | |||
| 2dc6f0d809 | |||
| 3323f9f122 | |||
| 045ee21f6a | |||
| ddd93811b5 | |||
| 2d84f15758 | |||
| 80ac3fbcc4 | |||
| 457e4406e9 | |||
| 25aa12f9c2 | |||
| cfcce191df | |||
| 9de09941a5 | |||
| d3dedae77e | |||
| ac8d81f1f3 | |||
| 1f75b98748 | |||
| 43a5363c11 | |||
| cd85593a0e | |||
| 499f05f8c4 | |||
| 51f20ee16e | |||
| eed177243f | |||
| 4d1071ddb7 | |||
| 0799f509e1 | |||
| c0a303b656 | |||
| 968d1850c6 | |||
| 68887786b4 | |||
| 6cffb57e63 | |||
| 4e500461bf | |||
| 807f317776 |
@@ -0,0 +1,4 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: [shu223]
|
||||
custom: ['https://paypal.me/shu223']
|
||||
+32
-11
@@ -1,6 +1,12 @@
|
||||
# Xcode
|
||||
.DS_Store
|
||||
*/build/*
|
||||
#
|
||||
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
|
||||
|
||||
## Build generated
|
||||
build/
|
||||
DerivedData/
|
||||
|
||||
## Various settings
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
@@ -9,13 +15,28 @@
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
profile
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
.idea/
|
||||
*.hmap
|
||||
*.xccheckout
|
||||
xcuserdata/
|
||||
|
||||
#CocoaPods
|
||||
Pods
|
||||
## Other
|
||||
*.moved-aside
|
||||
*.xcuserstate
|
||||
|
||||
## Obj-C/Swift specific
|
||||
*.hmap
|
||||
*.ipa
|
||||
|
||||
# CocoaPods
|
||||
#
|
||||
# We recommend against adding the Pods directory to your .gitignore. However
|
||||
# you should judge for yourself, the pros and cons are mentioned at:
|
||||
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
||||
|
||||
Pods/
|
||||
|
||||
# Carthage
|
||||
#
|
||||
# Add this line if you want to avoid checking in source code from Carthage dependencies.
|
||||
# Carthage/Checkouts
|
||||
|
||||
Carthage/Build
|
||||
PulsingHaloDemo.xccheckout
|
||||
|
||||
+5
-4
@@ -1,12 +1,13 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "PulsingHalo"
|
||||
s.version = "0.1.0"
|
||||
s.summary = "iOS Component For Creating A Pulsing Animation Great For Map Annotations And Beacons"
|
||||
s.version = "0.2.10"
|
||||
s.platform = :ios
|
||||
s.ios.deployment_target = '8.0'
|
||||
s.summary = "iOS Component to create Pulsating Animations."
|
||||
s.homepage = "https://github.com/shu223/PulsingHalo"
|
||||
s.license = 'MIT'
|
||||
s.author = { "shu223" => "shuichi0526@gmail.com" }
|
||||
s.platform = :ios
|
||||
s.source = { :git => "https://github.com/shu223/PulsingHalo.git", :tag => "0.1.0" }
|
||||
s.source = { :git => "https://github.com/shu223/PulsingHalo.git", :tag => "0.2.10" }
|
||||
s.source_files = 'PulsingHalo/*.{h,m}'
|
||||
s.framework = 'QuartzCore'
|
||||
s.requires_arc = true
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// PulsingHalo.h
|
||||
// PulsingHalo
|
||||
//
|
||||
// Created by Shuichi Tsutsumi on 3/11/16.
|
||||
// Copyright © 2016 Shuichi Tsutsumi. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for PulsingHalo.
|
||||
FOUNDATION_EXPORT double PulsingHaloVersionNumber;
|
||||
|
||||
//! Project version string for PulsingHalo.
|
||||
FOUNDATION_EXPORT const unsigned char PulsingHaloVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <PulsingHalo/PublicHeader.h>
|
||||
|
||||
#if __has_include(<PulsingHalo/PulsingHaloLayer.h>)
|
||||
#import <PulsingHalo/PulsingHaloLayer.h>
|
||||
#else
|
||||
#import "PulsingHaloLayer.h"
|
||||
#endif
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/**
|
||||
* The default value of this property is @c 0.45.
|
||||
*/
|
||||
@property (nonatomic, assign) CGFloat fromValueForAlpha;
|
||||
@property (nonatomic, assign) CGFloat fromValueForAlpha __attribute__ ((unavailable("Now the alpha channel of the backgroundColor is used.")));
|
||||
|
||||
/**
|
||||
* The value of this property should be ranging from @c 0 to @c 1 (exclusive).
|
||||
@@ -50,11 +50,6 @@
|
||||
*/
|
||||
@property (nonatomic, assign) NSTimeInterval pulseInterval;
|
||||
|
||||
/**
|
||||
* The default value of this property is @c INFINITY.
|
||||
*/
|
||||
@property (nonatomic, assign) float repeatCount;
|
||||
|
||||
/**
|
||||
* The default value of this property is @c YES.
|
||||
*/
|
||||
@@ -72,7 +67,14 @@
|
||||
*/
|
||||
@property (nonatomic, assign) NSTimeInterval startInterval;
|
||||
|
||||
/**
|
||||
* When this value is true, the halo will be automatically resumed after entering foreground.
|
||||
*
|
||||
* The default value of this property is YES.
|
||||
*/
|
||||
@property (nonatomic, assign) BOOL shouldResume;
|
||||
|
||||
- (void)start;
|
||||
- (void)stop;
|
||||
|
||||
@end
|
||||
|
||||
@@ -10,10 +10,18 @@
|
||||
|
||||
#import "PulsingHaloLayer.h"
|
||||
|
||||
|
||||
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000
|
||||
@interface PulsingHaloLayer () <CAAnimationDelegate>
|
||||
#else
|
||||
@interface PulsingHaloLayer ()
|
||||
#endif
|
||||
@property (nonatomic, strong) CALayer *effect;
|
||||
@property (nonatomic, strong) CAAnimationGroup *animationGroup;
|
||||
|
||||
// for resume
|
||||
@property (nonatomic, weak) CALayer *prevSuperlayer;
|
||||
@property (nonatomic, assign) unsigned int prevLayerIndex;
|
||||
@property (nonatomic, strong) CAAnimation *prevAnimation;
|
||||
@end
|
||||
|
||||
|
||||
@@ -24,17 +32,48 @@
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
|
||||
self.effect = [CALayer new];
|
||||
self.effect.contentsScale = [UIScreen mainScreen].scale;
|
||||
self.effect.opacity = 0;
|
||||
[self addSublayer:self.effect];
|
||||
|
||||
[self _setupDefaults];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(onDidEnterBackground:)
|
||||
name:UIApplicationDidEnterBackgroundNotification object:nil];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(onWillEnterForeground:)
|
||||
name:UIApplicationWillEnterForegroundNotification object:nil];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
- (void)onDidEnterBackground:(NSNotification *)notification {
|
||||
self.prevSuperlayer = self.superlayer;
|
||||
if (self.prevSuperlayer) {
|
||||
unsigned int layerIndex = 0;
|
||||
for (CALayer *aSublayer in self.superlayer.sublayers) {
|
||||
if (aSublayer == self) {
|
||||
self.prevLayerIndex = layerIndex;
|
||||
break;
|
||||
}
|
||||
layerIndex++;
|
||||
}
|
||||
}
|
||||
self.prevAnimation = [self.effect animationForKey:@"pulse"];
|
||||
}
|
||||
|
||||
- (void)onWillEnterForeground:(NSNotification *)notification {
|
||||
if (self.shouldResume) {
|
||||
[self _resume];
|
||||
}
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
#pragma mark - Accessor
|
||||
@@ -44,18 +83,32 @@
|
||||
[self.effect addAnimation:self.animationGroup forKey:@"pulse"];
|
||||
}
|
||||
|
||||
- (void)stop {
|
||||
[self removeAllAnimations];
|
||||
self.animationGroup.delegate = nil;
|
||||
}
|
||||
|
||||
- (void)setFrame:(CGRect)frame {
|
||||
[super setFrame:frame];
|
||||
self.effect.frame = frame;
|
||||
}
|
||||
|
||||
- (void)setBorderWidth:(CGFloat)borderWidth {
|
||||
[super setBorderWidth:borderWidth];
|
||||
self.effect.borderWidth = borderWidth;
|
||||
}
|
||||
|
||||
- (void)setBorderColor:(CGColorRef)borderColor {
|
||||
[super setBorderColor:borderColor];
|
||||
self.effect.borderColor = borderColor;
|
||||
}
|
||||
|
||||
- (void)setBackgroundColor:(CGColorRef)backgroundColor {
|
||||
[super setBackgroundColor:backgroundColor];
|
||||
self.effect.backgroundColor = backgroundColor;
|
||||
}
|
||||
|
||||
- (void)setRadius:(CGFloat)radius {
|
||||
|
||||
_radius = radius;
|
||||
|
||||
CGFloat diameter = self.radius * 2;
|
||||
@@ -65,7 +118,6 @@
|
||||
}
|
||||
|
||||
- (void)setPulseInterval:(NSTimeInterval)pulseInterval {
|
||||
|
||||
_pulseInterval = pulseInterval;
|
||||
|
||||
if (_pulseInterval == INFINITY) {
|
||||
@@ -74,32 +126,34 @@
|
||||
}
|
||||
|
||||
- (void)setHaloLayerNumber:(NSInteger)haloLayerNumber {
|
||||
|
||||
_haloLayerNumber = haloLayerNumber;
|
||||
self.instanceCount = haloLayerNumber;
|
||||
self.instanceDelay = (self.animationDuration + self.pulseInterval) / haloLayerNumber;
|
||||
}
|
||||
|
||||
- (void)setStartInterval:(NSTimeInterval)startInterval {
|
||||
|
||||
_startInterval = startInterval;
|
||||
self.instanceDelay = startInterval;
|
||||
}
|
||||
|
||||
- (void)setAnimationDuration:(NSTimeInterval)animationDuration {
|
||||
|
||||
_animationDuration = animationDuration;
|
||||
|
||||
self.instanceDelay = (self.animationDuration + self.pulseInterval) / self.haloLayerNumber;
|
||||
}
|
||||
|
||||
- (void)setRepeatCount:(float)repeatCount {
|
||||
[super setRepeatCount:repeatCount];
|
||||
self.animationGroup.repeatCount = repeatCount;
|
||||
}
|
||||
|
||||
|
||||
// =============================================================================
|
||||
#pragma mark - Private
|
||||
|
||||
- (void)_setupDefaults {
|
||||
_shouldResume = YES;
|
||||
_fromValueForRadius = 0.0;
|
||||
_fromValueForAlpha = 0.45;
|
||||
_keyTimeForHalfOpacity = 0.2;
|
||||
_animationDuration = 3;
|
||||
_pulseInterval = 0;
|
||||
@@ -109,11 +163,10 @@
|
||||
self.radius = 60;
|
||||
self.haloLayerNumber = 1;
|
||||
self.startInterval = 1;
|
||||
self.backgroundColor = [[UIColor colorWithRed:0.000 green:0.455 blue:0.756 alpha:1] CGColor];
|
||||
self.backgroundColor = [[UIColor colorWithRed:0.000 green:0.455 blue:0.756 alpha:0.45] CGColor];
|
||||
}
|
||||
|
||||
- (void)_setupAnimationGroup {
|
||||
|
||||
CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
|
||||
animationGroup.duration = self.animationDuration + self.pulseInterval;
|
||||
animationGroup.repeatCount = self.repeatCount;
|
||||
@@ -129,7 +182,8 @@
|
||||
|
||||
CAKeyframeAnimation *opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
|
||||
opacityAnimation.duration = self.animationDuration;
|
||||
opacityAnimation.values = @[@(self.fromValueForAlpha), @0.45, @0];
|
||||
CGFloat fromValueForAlpha = CGColorGetAlpha(self.backgroundColor);
|
||||
opacityAnimation.values = @[@(fromValueForAlpha), @(fromValueForAlpha * 0.5), @0];
|
||||
opacityAnimation.keyTimes = @[@0, @(self.keyTimeForHalfOpacity), @1];
|
||||
|
||||
NSArray *animations = @[scaleAnimation, opacityAnimation];
|
||||
@@ -140,12 +194,19 @@
|
||||
self.animationGroup.delegate = self;
|
||||
}
|
||||
|
||||
- (void)_resume {
|
||||
[self addSublayer:self.effect];
|
||||
[self.prevSuperlayer insertSublayer:self atIndex:self.prevLayerIndex];
|
||||
if (self.prevAnimation) {
|
||||
[self.effect addAnimation:self.prevAnimation forKey:@"pulse"];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// =============================================================================
|
||||
#pragma mark - CAAnimationDelegate
|
||||
|
||||
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
|
||||
|
||||
if ([self.effect.animationKeys count]) {
|
||||
[self.effect removeAllAnimations];
|
||||
}
|
||||
|
||||
@@ -7,7 +7,10 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
8A76D79E1BD4CC6B00C3881D /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8A76D79D1BD4CC6B00C3881D /* Launch Screen.storyboard */; settings = {ASSET_TAGS = (); }; };
|
||||
8A76D79E1BD4CC6B00C3881D /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8A76D79D1BD4CC6B00C3881D /* Launch Screen.storyboard */; };
|
||||
8AB7E7DC1C92DD87009A3BB6 /* PulsingHalo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AB7E7DB1C92DD87009A3BB6 /* PulsingHalo.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
8AB7E80A1C92F6FB009A3BB6 /* PulsingHaloLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AC9074B185065DB00A74F2E /* PulsingHaloLayer.m */; };
|
||||
8AB7E8121C92FEB1009A3BB6 /* PulsingHaloLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AC9074A185065DB00A74F2E /* PulsingHaloLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
8AC907151850659E00A74F2E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AC907141850659E00A74F2E /* Foundation.framework */; };
|
||||
8AC907171850659E00A74F2E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AC907161850659E00A74F2E /* CoreGraphics.framework */; };
|
||||
8AC907191850659E00A74F2E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AC907181850659E00A74F2E /* UIKit.framework */; };
|
||||
@@ -35,8 +38,24 @@
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
8AB7E7E51C92DD88009A3BB6 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
8A76D79D1BD4CC6B00C3881D /* Launch Screen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
|
||||
8AB7E7D91C92DD87009A3BB6 /* PulsingHalo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PulsingHalo.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8AB7E7DB1C92DD87009A3BB6 /* PulsingHalo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PulsingHalo.h; sourceTree = "<group>"; };
|
||||
8AB7E7DD1C92DD87009A3BB6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
8AC907111850659E00A74F2E /* PulsingHaloDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PulsingHaloDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8AC907141850659E00A74F2E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
8AC907161850659E00A74F2E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
@@ -61,6 +80,13 @@
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
8AB7E7D51C92DD87009A3BB6 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8AC9070E1850659E00A74F2E /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -84,10 +110,21 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
8AB7E7DA1C92DD87009A3BB6 /* PulsingHalo */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8AB7E7DB1C92DD87009A3BB6 /* PulsingHalo.h */,
|
||||
8AC9074A185065DB00A74F2E /* PulsingHaloLayer.h */,
|
||||
8AC9074B185065DB00A74F2E /* PulsingHaloLayer.m */,
|
||||
8AB7E7DD1C92DD87009A3BB6 /* Info.plist */,
|
||||
);
|
||||
path = PulsingHalo;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8AC907081850659E00A74F2E = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8AC90749185065DB00A74F2E /* PulsingHalo */,
|
||||
8AB7E7DA1C92DD87009A3BB6 /* PulsingHalo */,
|
||||
8AC9071A1850659E00A74F2E /* PulsingHaloDemo */,
|
||||
8AC907391850659E00A74F2E /* PulsingHaloDemoTests */,
|
||||
8AC907131850659E00A74F2E /* Frameworks */,
|
||||
@@ -100,6 +137,7 @@
|
||||
children = (
|
||||
8AC907111850659E00A74F2E /* PulsingHaloDemo.app */,
|
||||
8AC907321850659E00A74F2E /* PulsingHaloDemoTests.xctest */,
|
||||
8AB7E7D91C92DD87009A3BB6 /* PulsingHalo.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@@ -159,18 +197,39 @@
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
8AC90749185065DB00A74F2E /* PulsingHalo */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8AC9074A185065DB00A74F2E /* PulsingHaloLayer.h */,
|
||||
8AC9074B185065DB00A74F2E /* PulsingHaloLayer.m */,
|
||||
);
|
||||
path = PulsingHalo;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
8AB7E7D61C92DD87009A3BB6 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8AB7E7DC1C92DD87009A3BB6 /* PulsingHalo.h in Headers */,
|
||||
8AB7E8121C92FEB1009A3BB6 /* PulsingHaloLayer.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8AB7E7D81C92DD87009A3BB6 /* PulsingHalo */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8AB7E7E41C92DD88009A3BB6 /* Build configuration list for PBXNativeTarget "PulsingHalo" */;
|
||||
buildPhases = (
|
||||
8AB7E7D41C92DD87009A3BB6 /* Sources */,
|
||||
8AB7E7D51C92DD87009A3BB6 /* Frameworks */,
|
||||
8AB7E7D61C92DD87009A3BB6 /* Headers */,
|
||||
8AB7E7D71C92DD87009A3BB6 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = PulsingHalo;
|
||||
productName = PulsingHalo;
|
||||
productReference = 8AB7E7D91C92DD87009A3BB6 /* PulsingHalo.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
8AC907101850659E00A74F2E /* PulsingHaloDemo */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8AC907431850659E00A74F2E /* Build configuration list for PBXNativeTarget "PulsingHaloDemo" */;
|
||||
@@ -178,6 +237,7 @@
|
||||
8AC9070D1850659E00A74F2E /* Sources */,
|
||||
8AC9070E1850659E00A74F2E /* Frameworks */,
|
||||
8AC9070F1850659E00A74F2E /* Resources */,
|
||||
8AB7E7E51C92DD88009A3BB6 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -212,9 +272,16 @@
|
||||
8AC907091850659E00A74F2E /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0700;
|
||||
LastUpgradeCheck = 1300;
|
||||
ORGANIZATIONNAME = "Shuichi Tsutsumi";
|
||||
TargetAttributes = {
|
||||
8AB7E7D81C92DD87009A3BB6 = {
|
||||
CreatedOnToolsVersion = 7.2.1;
|
||||
};
|
||||
8AC907101850659E00A74F2E = {
|
||||
DevelopmentTeam = 9Z86A4AWDE;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
8AC907311850659E00A74F2E = {
|
||||
TestTargetID = 8AC907101850659E00A74F2E;
|
||||
};
|
||||
@@ -222,7 +289,7 @@
|
||||
};
|
||||
buildConfigurationList = 8AC9070C1850659E00A74F2E /* Build configuration list for PBXProject "PulsingHaloDemo" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
@@ -235,11 +302,19 @@
|
||||
targets = (
|
||||
8AC907101850659E00A74F2E /* PulsingHaloDemo */,
|
||||
8AC907311850659E00A74F2E /* PulsingHaloDemoTests */,
|
||||
8AB7E7D81C92DD87009A3BB6 /* PulsingHalo */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
8AB7E7D71C92DD87009A3BB6 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8AC9070F1850659E00A74F2E /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -262,6 +337,14 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8AB7E7D41C92DD87009A3BB6 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8AB7E80A1C92F6FB009A3BB6 /* PulsingHaloLayer.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
8AC9070D1850659E00A74F2E /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -319,27 +402,100 @@
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
8AB7E7E21C92DD88009A3BB6 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = PulsingHalo/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "Shuichi-Tsutsumi.PulsingHalo";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8AB7E7E31C92DD88009A3BB6 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
INFOPLIST_FILE = PulsingHalo/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "Shuichi-Tsutsumi.PulsingHalo";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
8AC907411850659E00A74F2E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
@@ -352,7 +508,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
@@ -362,29 +518,44 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
@@ -394,11 +565,13 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
DEVELOPMENT_TEAM = 9Z86A4AWDE;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "PulsingHaloDemo/PulsingHaloDemo-Prefix.pch";
|
||||
INFOPLIST_FILE = "PulsingHaloDemo/PulsingHaloDemo-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "Shuichi-Tsutsumi.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
@@ -409,11 +582,13 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
DEVELOPMENT_TEAM = 9Z86A4AWDE;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "PulsingHaloDemo/PulsingHaloDemo-Prefix.pch";
|
||||
INFOPLIST_FILE = "PulsingHaloDemo/PulsingHaloDemo-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.4;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "Shuichi-Tsutsumi.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
@@ -465,6 +640,15 @@
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
8AB7E7E41C92DD88009A3BB6 /* Build configuration list for PBXNativeTarget "PulsingHalo" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
8AB7E7E21C92DD88009A3BB6 /* Debug */,
|
||||
8AB7E7E31C92DD88009A3BB6 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
8AC9070C1850659E00A74F2E /* Build configuration list for PBXProject "PulsingHaloDemo" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1300"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8AB7E7D81C92DD87009A3BB6"
|
||||
BuildableName = "PulsingHalo.framework"
|
||||
BlueprintName = "PulsingHalo"
|
||||
ReferencedContainer = "container:PulsingHaloDemo.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8AB7E7D81C92DD87009A3BB6"
|
||||
BuildableName = "PulsingHalo.framework"
|
||||
BlueprintName = "PulsingHalo"
|
||||
ReferencedContainer = "container:PulsingHaloDemo.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "8AB7E7D81C92DD87009A3BB6"
|
||||
BuildableName = "PulsingHalo.framework"
|
||||
BlueprintName = "PulsingHalo"
|
||||
ReferencedContainer = "container:PulsingHaloDemo.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -1,47 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="vXZ-lx-hvc">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="vXZ-lx-hvc">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="ufC-wZ-h7g">
|
||||
<objects>
|
||||
<viewController id="vXZ-lx-hvc" customClass="ViewController" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="3co-dU-CDK"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="SwP-Kv-4m5"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="kh9-bI-dsS">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fl3-yd-NIN">
|
||||
<rect key="frame" x="0.0" y="28" width="320" height="257"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="372"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Image" translatesAutoresizingMaskIntoConstraints="NO" id="b02-F2-S1G">
|
||||
<rect key="frame" x="135" y="103" width="50" height="50"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="162.5" y="161" width="50" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="AbO-K8-a2R"/>
|
||||
<constraint firstAttribute="height" constant="50" id="Ui7-Oz-DkV"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="b02-F2-S1G" firstAttribute="centerX" secondItem="fl3-yd-NIN" secondAttribute="centerX" id="KX5-HO-kIP"/>
|
||||
<constraint firstItem="b02-F2-S1G" firstAttribute="centerY" secondItem="fl3-yd-NIN" secondAttribute="centerY" id="upR-Wu-743"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="H5o-9G-3fm">
|
||||
<rect key="frame" x="0.0" y="293" width="320" height="275"/>
|
||||
<rect key="frame" x="0.0" y="372" width="375" height="275"/>
|
||||
<subviews>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="3" minValue="1" maxValue="10" translatesAutoresizingMaskIntoConstraints="NO" id="S4w-Qm-Uy5">
|
||||
<rect key="frame" x="101" y="20" width="118" height="31"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="128.5" y="20" width="118" height="31"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="114" id="fx1-cr-NOG"/>
|
||||
</constraints>
|
||||
@@ -50,8 +46,7 @@
|
||||
</connections>
|
||||
</slider>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="AGT-ka-xWt">
|
||||
<rect key="frame" x="101" y="61" width="118" height="31"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="128.5" y="61" width="118" height="31"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="114" id="Nzw-s8-nHW"/>
|
||||
</constraints>
|
||||
@@ -60,8 +55,7 @@
|
||||
</connections>
|
||||
</slider>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="OuG-Ah-VZZ">
|
||||
<rect key="frame" x="101" y="102" width="118" height="31"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="128.5" y="102" width="118" height="31"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="114" id="Mh3-0r-dlH"/>
|
||||
</constraints>
|
||||
@@ -70,8 +64,7 @@
|
||||
</connections>
|
||||
</slider>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="rzu-Eg-unI">
|
||||
<rect key="frame" x="101" y="143" width="118" height="31"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="128.5" y="143" width="118" height="31"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="114" id="hoD-XQ-jIb"/>
|
||||
</constraints>
|
||||
@@ -80,8 +73,7 @@
|
||||
</connections>
|
||||
</slider>
|
||||
<slider opaque="NO" tag="1" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="2mN-dD-yv5">
|
||||
<rect key="frame" x="101" y="184" width="118" height="31"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="128.5" y="184" width="118" height="31"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="114" id="fvx-4w-Xla"/>
|
||||
</constraints>
|
||||
@@ -90,8 +82,7 @@
|
||||
</connections>
|
||||
</slider>
|
||||
<slider opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="Wh3-AW-Xwr">
|
||||
<rect key="frame" x="101" y="225" width="118" height="31"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="128.5" y="225" width="118" height="31"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="114" id="Hoc-2U-Wfn"/>
|
||||
</constraints>
|
||||
@@ -100,126 +91,125 @@
|
||||
</connections>
|
||||
</slider>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Radius" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XHK-dc-rMm">
|
||||
<rect key="frame" x="52" y="67" width="41.5" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="81" y="67.5" width="41.5" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Duration" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NTZ-GR-2Ti">
|
||||
<rect key="frame" x="42.5" y="109" width="51" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="71.5" y="108.5" width="51" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.00" lineBreakMode="clip" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Ae-iF-Uo2">
|
||||
<rect key="frame" x="224" y="67" width="27.5" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="252.5" y="67.5" width="27.5" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.00" lineBreakMode="clip" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="enD-Za-KPs">
|
||||
<rect key="frame" x="224" y="108" width="27.5" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="252.5" y="108.5" width="27.5" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.00" lineBreakMode="clip" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="byo-ur-zAu">
|
||||
<rect key="frame" x="224" y="149" width="27.5" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="252.5" y="149.5" width="27.5" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.00" lineBreakMode="clip" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="16G-0A-ZRR">
|
||||
<rect key="frame" x="224" y="190" width="27.5" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="252.5" y="190.5" width="27.5" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.00" lineBreakMode="clip" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cr8-K3-bbK">
|
||||
<rect key="frame" x="224" y="231" width="27.5" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="252.5" y="231.5" width="27.5" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="R" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="272-O8-NYD">
|
||||
<rect key="frame" x="84" y="149" width="9.5" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="113" y="149.5" width="9.5" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="G" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BhV-bI-fTv">
|
||||
<rect key="frame" x="83" y="190" width="10.5" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="112" y="190.5" width="10.5" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="B" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7O2-Ri-YuD">
|
||||
<rect key="frame" x="84" y="231" width="9.5" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="111.5" y="231.5" width="9.5" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Count" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2XQ-eP-qmu">
|
||||
<rect key="frame" x="57" y="26" width="37" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="85.5" y="26.5" width="37" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1.00" lineBreakMode="clip" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ike-SP-Oen">
|
||||
<rect key="frame" x="224" y="26" width="27.5" height="17"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="252.5" y="26.5" width="27.5" height="17"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="14"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="textColor" systemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="16G-0A-ZRR" firstAttribute="leading" secondItem="2mN-dD-yv5" secondAttribute="trailing" constant="7" id="0S0-mq-IaE"/>
|
||||
<constraint firstItem="S4w-Qm-Uy5" firstAttribute="leading" secondItem="2XQ-eP-qmu" secondAttribute="trailing" constant="9" id="1VS-Be-eKf"/>
|
||||
<constraint firstItem="16G-0A-ZRR" firstAttribute="leading" secondItem="2mN-dD-yv5" secondAttribute="trailing" constant="8" symbolic="YES" id="0S0-mq-IaE"/>
|
||||
<constraint firstItem="S4w-Qm-Uy5" firstAttribute="leading" secondItem="2XQ-eP-qmu" secondAttribute="trailing" constant="8" symbolic="YES" id="1VS-Be-eKf"/>
|
||||
<constraint firstItem="NTZ-GR-2Ti" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="H5o-9G-3fm" secondAttribute="leading" id="2Tq-qu-ljd"/>
|
||||
<constraint firstItem="S4w-Qm-Uy5" firstAttribute="centerX" secondItem="H5o-9G-3fm" secondAttribute="centerX" id="55O-hU-VsY"/>
|
||||
<constraint firstItem="2mN-dD-yv5" firstAttribute="leading" secondItem="BhV-bI-fTv" secondAttribute="trailing" constant="9" id="59s-V7-FVM"/>
|
||||
<constraint firstItem="ike-SP-Oen" firstAttribute="leading" secondItem="S4w-Qm-Uy5" secondAttribute="trailing" constant="7" id="5vM-sn-DJh"/>
|
||||
<constraint firstItem="ike-SP-Oen" firstAttribute="leading" secondItem="S4w-Qm-Uy5" secondAttribute="trailing" constant="8" symbolic="YES" id="5vM-sn-DJh"/>
|
||||
<constraint firstItem="272-O8-NYD" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="H5o-9G-3fm" secondAttribute="leading" id="7VK-Wg-BIJ"/>
|
||||
<constraint firstItem="Cr8-K3-bbK" firstAttribute="centerY" secondItem="Wh3-AW-Xwr" secondAttribute="centerY" id="7yR-Ua-jfV"/>
|
||||
<constraint firstItem="BhV-bI-fTv" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="H5o-9G-3fm" secondAttribute="leading" id="86e-fS-IkG"/>
|
||||
<constraint firstItem="NTZ-GR-2Ti" firstAttribute="centerY" secondItem="OuG-Ah-VZZ" secondAttribute="centerY" id="C8m-g2-u6l"/>
|
||||
<constraint firstItem="Wh3-AW-Xwr" firstAttribute="centerX" secondItem="H5o-9G-3fm" secondAttribute="centerX" id="DLb-lw-OeE"/>
|
||||
<constraint firstItem="OuG-Ah-VZZ" firstAttribute="top" secondItem="AGT-ka-xWt" secondAttribute="bottom" constant="11" id="EIb-Hk-YLB"/>
|
||||
<constraint firstItem="Cr8-K3-bbK" firstAttribute="leading" secondItem="Wh3-AW-Xwr" secondAttribute="trailing" constant="7" id="FmM-hA-vOJ"/>
|
||||
<constraint firstItem="Cr8-K3-bbK" firstAttribute="leading" secondItem="Wh3-AW-Xwr" secondAttribute="trailing" constant="8" symbolic="YES" id="FmM-hA-vOJ"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="16G-0A-ZRR" secondAttribute="trailing" id="Hhe-mF-wVd"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ike-SP-Oen" secondAttribute="trailing" id="I9c-pR-WFZ"/>
|
||||
<constraint firstItem="AGT-ka-xWt" firstAttribute="centerX" secondItem="H5o-9G-3fm" secondAttribute="centerX" id="IWp-Bt-LxZ"/>
|
||||
<constraint firstItem="AGT-ka-xWt" firstAttribute="leading" secondItem="XHK-dc-rMm" secondAttribute="trailing" constant="9" id="Lf4-jM-fdC"/>
|
||||
<constraint firstItem="rzu-Eg-unI" firstAttribute="leading" secondItem="272-O8-NYD" secondAttribute="trailing" constant="9" id="Ohq-Ze-cX3"/>
|
||||
<constraint firstItem="enD-Za-KPs" firstAttribute="leading" secondItem="OuG-Ah-VZZ" secondAttribute="trailing" constant="7" id="SBt-Oe-HHS"/>
|
||||
<constraint firstItem="2XQ-eP-qmu" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="H5o-9G-3fm" secondAttribute="leading" id="LOS-CA-iot"/>
|
||||
<constraint firstItem="AGT-ka-xWt" firstAttribute="leading" secondItem="XHK-dc-rMm" secondAttribute="trailing" constant="8" symbolic="YES" id="Lf4-jM-fdC"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="enD-Za-KPs" secondAttribute="trailing" id="NAG-ki-arM"/>
|
||||
<constraint firstItem="7O2-Ri-YuD" firstAttribute="leading" secondItem="H5o-9G-3fm" secondAttribute="leading" constant="111.5" id="NBt-Bg-HyJ"/>
|
||||
<constraint firstItem="rzu-Eg-unI" firstAttribute="leading" secondItem="272-O8-NYD" secondAttribute="trailing" constant="8" symbolic="YES" id="Ohq-Ze-cX3"/>
|
||||
<constraint firstItem="enD-Za-KPs" firstAttribute="leading" secondItem="OuG-Ah-VZZ" secondAttribute="trailing" constant="8" symbolic="YES" id="SBt-Oe-HHS"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Cr8-K3-bbK" secondAttribute="trailing" id="Sdp-fR-V3V"/>
|
||||
<constraint firstItem="rzu-Eg-unI" firstAttribute="centerX" secondItem="H5o-9G-3fm" secondAttribute="centerX" id="T3G-09-8X8"/>
|
||||
<constraint firstItem="XHK-dc-rMm" firstAttribute="centerY" secondItem="AGT-ka-xWt" secondAttribute="centerY" id="VHf-aA-PzG"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="5Ae-iF-Uo2" secondAttribute="trailing" id="Veg-Mb-PGI"/>
|
||||
<constraint firstItem="S4w-Qm-Uy5" firstAttribute="top" secondItem="H5o-9G-3fm" secondAttribute="top" constant="20" id="X21-Qn-0zA"/>
|
||||
<constraint firstItem="16G-0A-ZRR" firstAttribute="centerY" secondItem="2mN-dD-yv5" secondAttribute="centerY" id="XcJ-h3-lzT"/>
|
||||
<constraint firstItem="5Ae-iF-Uo2" firstAttribute="leading" secondItem="AGT-ka-xWt" secondAttribute="trailing" constant="7" id="YDu-7d-Wce"/>
|
||||
<constraint firstItem="Wh3-AW-Xwr" firstAttribute="leading" secondItem="7O2-Ri-YuD" secondAttribute="trailing" constant="9" id="ZAE-JC-hXx"/>
|
||||
<constraint firstItem="5Ae-iF-Uo2" firstAttribute="leading" secondItem="AGT-ka-xWt" secondAttribute="trailing" constant="8" symbolic="YES" id="YDu-7d-Wce"/>
|
||||
<constraint firstItem="Wh3-AW-Xwr" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="7O2-Ri-YuD" secondAttribute="trailing" constant="8" symbolic="YES" id="ZAE-JC-hXx"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Wh3-AW-Xwr" secondAttribute="bottom" constant="20" id="ZED-cL-keq"/>
|
||||
<constraint firstItem="byo-ur-zAu" firstAttribute="centerY" secondItem="rzu-Eg-unI" secondAttribute="centerY" id="ZOK-zd-LpH"/>
|
||||
<constraint firstItem="2XQ-eP-qmu" firstAttribute="centerY" secondItem="S4w-Qm-Uy5" secondAttribute="centerY" id="ZeT-be-2m9"/>
|
||||
<constraint firstItem="XHK-dc-rMm" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="H5o-9G-3fm" secondAttribute="leading" id="dvy-nB-zgr"/>
|
||||
<constraint firstItem="enD-Za-KPs" firstAttribute="centerY" secondItem="OuG-Ah-VZZ" secondAttribute="centerY" id="ho9-Jg-222"/>
|
||||
<constraint firstItem="ike-SP-Oen" firstAttribute="centerY" secondItem="S4w-Qm-Uy5" secondAttribute="centerY" id="i00-Ha-wCf"/>
|
||||
<constraint firstItem="byo-ur-zAu" firstAttribute="leading" secondItem="rzu-Eg-unI" secondAttribute="trailing" constant="7" id="jNP-0f-Feu"/>
|
||||
<constraint firstItem="byo-ur-zAu" firstAttribute="leading" secondItem="rzu-Eg-unI" secondAttribute="trailing" constant="8" symbolic="YES" id="jNP-0f-Feu"/>
|
||||
<constraint firstItem="BhV-bI-fTv" firstAttribute="centerY" secondItem="2mN-dD-yv5" secondAttribute="centerY" id="jws-PN-t1M"/>
|
||||
<constraint firstItem="7O2-Ri-YuD" firstAttribute="centerY" secondItem="Wh3-AW-Xwr" secondAttribute="centerY" id="kG2-Jk-BlG"/>
|
||||
<constraint firstItem="5Ae-iF-Uo2" firstAttribute="centerY" secondItem="AGT-ka-xWt" secondAttribute="centerY" id="lPs-UT-dL7"/>
|
||||
<constraint firstItem="2mN-dD-yv5" firstAttribute="top" secondItem="rzu-Eg-unI" secondAttribute="bottom" constant="11" id="mKc-zP-Nky"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="byo-ur-zAu" secondAttribute="trailing" id="nwE-Xw-55t"/>
|
||||
<constraint firstItem="Wh3-AW-Xwr" firstAttribute="top" secondItem="2mN-dD-yv5" secondAttribute="bottom" constant="11" id="sVi-Fd-e6i"/>
|
||||
<constraint firstItem="OuG-Ah-VZZ" firstAttribute="leading" secondItem="NTZ-GR-2Ti" secondAttribute="trailing" constant="9" id="sn1-zO-D3f"/>
|
||||
<constraint firstItem="OuG-Ah-VZZ" firstAttribute="leading" secondItem="NTZ-GR-2Ti" secondAttribute="trailing" constant="8" symbolic="YES" id="sn1-zO-D3f"/>
|
||||
<constraint firstItem="2mN-dD-yv5" firstAttribute="centerX" secondItem="H5o-9G-3fm" secondAttribute="centerX" id="t6Z-LF-pD7"/>
|
||||
<constraint firstItem="2mN-dD-yv5" firstAttribute="leading" secondItem="BhV-bI-fTv" secondAttribute="trailing" constant="8" symbolic="YES" id="tD1-e9-jys"/>
|
||||
<constraint firstItem="OuG-Ah-VZZ" firstAttribute="centerX" secondItem="H5o-9G-3fm" secondAttribute="centerX" id="uu5-4w-m4L"/>
|
||||
<constraint firstItem="AGT-ka-xWt" firstAttribute="top" secondItem="S4w-Qm-Uy5" secondAttribute="bottom" constant="11" id="vf1-7j-qLC"/>
|
||||
<constraint firstItem="272-O8-NYD" firstAttribute="centerY" secondItem="rzu-Eg-unI" secondAttribute="centerY" id="ygA-Fv-FUB"/>
|
||||
@@ -227,16 +217,16 @@
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<viewLayoutGuide key="safeArea" id="JUs-QT-iwQ"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="SwP-Kv-4m5" firstAttribute="top" secondItem="H5o-9G-3fm" secondAttribute="bottom" id="8jE-Q9-oYO"/>
|
||||
<constraint firstItem="H5o-9G-3fm" firstAttribute="top" secondItem="fl3-yd-NIN" secondAttribute="bottom" constant="8" id="EJE-a6-ToD"/>
|
||||
<constraint firstAttribute="trailing" secondItem="fl3-yd-NIN" secondAttribute="trailing" id="FPN-mE-J31"/>
|
||||
<constraint firstItem="fl3-yd-NIN" firstAttribute="top" secondItem="3co-dU-CDK" secondAttribute="bottom" constant="8" id="MAG-EU-MsG"/>
|
||||
<constraint firstAttribute="trailing" secondItem="H5o-9G-3fm" secondAttribute="trailing" id="Vbn-XD-vG8"/>
|
||||
<constraint firstItem="fl3-yd-NIN" firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leading" id="maD-7v-ni3"/>
|
||||
<constraint firstItem="H5o-9G-3fm" firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leading" id="nbq-UD-MY7"/>
|
||||
<constraint firstItem="fl3-yd-NIN" firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leading" id="1s5-vF-55z"/>
|
||||
<constraint firstItem="JUs-QT-iwQ" firstAttribute="bottom" secondItem="H5o-9G-3fm" secondAttribute="bottom" constant="20" id="8jE-Q9-oYO"/>
|
||||
<constraint firstItem="H5o-9G-3fm" firstAttribute="top" secondItem="fl3-yd-NIN" secondAttribute="bottom" id="EJE-a6-ToD"/>
|
||||
<constraint firstItem="fl3-yd-NIN" firstAttribute="top" secondItem="JUs-QT-iwQ" secondAttribute="top" id="MAG-EU-MsG"/>
|
||||
<constraint firstItem="H5o-9G-3fm" firstAttribute="leading" secondItem="kh9-bI-dsS" secondAttribute="leading" id="TQv-SF-3bE"/>
|
||||
<constraint firstAttribute="trailing" secondItem="fl3-yd-NIN" secondAttribute="trailing" id="Y9B-nw-fuL"/>
|
||||
<constraint firstAttribute="trailing" secondItem="H5o-9G-3fm" secondAttribute="trailing" id="v3H-2m-SCt"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
@@ -257,10 +247,13 @@
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="x5A-6p-PRh" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="412" y="76"/>
|
||||
<point key="canvasLocation" x="659.20000000000005" y="68.365817091454275"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="Image" width="285" height="599"/>
|
||||
<image name="Image" width="285" height="599.5"/>
|
||||
<systemColor name="darkTextColor">
|
||||
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "iphone",
|
||||
"size" : "20x20",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
@@ -35,6 +45,12 @@
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-60@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "1024x1024",
|
||||
"idiom" : "ios-marketing",
|
||||
"filename" : "Icon-1024.png",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 295 KiB |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"orientation" : "portrait",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Default@2x.png",
|
||||
"extent" : "full-screen",
|
||||
"minimum-system-version" : "7.0",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"idiom" : "iphone",
|
||||
"subtype" : "retina4",
|
||||
"filename" : "Default-568h@2x.png",
|
||||
"minimum-system-version" : "7.0",
|
||||
"orientation" : "portrait",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 41 KiB |
@@ -1,8 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
@@ -14,16 +16,14 @@
|
||||
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="bluetooth_book" translatesAutoresizingMaskIntoConstraints="NO" id="KgX-hc-3sO">
|
||||
<rect key="frame" x="217" y="216" width="167" height="167"/>
|
||||
<animations/>
|
||||
<rect key="frame" x="104" y="250" width="167" height="167"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<animations/>
|
||||
<color key="backgroundColor" red="0.0" green="0.45490196347236633" blue="0.75686275959014893" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.45490196347236633" blue="0.75686275959014893" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="KgX-hc-3sO" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="KVD-eD-Cmd"/>
|
||||
<constraint firstItem="KgX-hc-3sO" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="ogK-3c-PFR"/>
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
PulsingHalo
|
||||
===========
|
||||
|
||||
**PulsingHalo has been discontinued, and is no longer being maintained.** Please check out **[Pulsator](https://github.com/shu223/Pulsator)** which is the new version of this written with Swift.
|
||||
|
||||
[](https://github.com/Carthage/Carthage)
|
||||
[](http://cocoadocs.org/docsets/PulsingHalo)
|
||||
[](http://mit-license.org)
|
||||
|
||||
iOS component for creating a pulsing animation. It allows you to create halos.
|
||||
|
||||

|
||||
@@ -10,38 +17,51 @@ Great For:
|
||||
- **Pulses of beacons (iBeacon)**
|
||||
- Map Annotations
|
||||
|
||||
##Installation
|
||||
|
||||
###CocoaPods
|
||||
## Installation
|
||||
|
||||
Edit your Podfile.
|
||||
### CocoaPods
|
||||
|
||||
````
|
||||
Add into your Podfile.
|
||||
|
||||
```
|
||||
pod "PulsingHalo"
|
||||
````
|
||||
```
|
||||
|
||||
And `$ pod install`
|
||||
Then `$ pod install`
|
||||
|
||||
###Manual
|
||||
|
||||
### Carthage
|
||||
|
||||
Add into your Cartfile.
|
||||
|
||||
```
|
||||
github "shu223/PulsingHalo"
|
||||
```
|
||||
|
||||
Then `$ carthage update`
|
||||
|
||||
|
||||
### Manual
|
||||
|
||||
Add PulsingHaloLayer.h,m into your project.
|
||||
|
||||
##How to use
|
||||
## How to use
|
||||
|
||||
Just **initiate and add** to your view layer.
|
||||
|
||||
###Swift
|
||||
### Swift
|
||||
|
||||
```swift.SomeViewController.swift
|
||||
```swift
|
||||
let halo = PulsingHaloLayer()
|
||||
halo.position = view.center
|
||||
view.layer.addSublayer(halo)
|
||||
halo.start()
|
||||
```
|
||||
|
||||
###Objective-C
|
||||
### Objective-C
|
||||
|
||||
```objc:SomeViewController.m
|
||||
```objc
|
||||
PulsingHaloLayer *halo = [PulsingHaloLayer layer];
|
||||
halo.position = self.view.center;
|
||||
[self.view.layer addSublayer:halo];
|
||||
@@ -51,60 +71,77 @@ halo.position = self.view.center;
|
||||
|
||||
|
||||
|
||||
##Customizations
|
||||
## Customizations
|
||||
|
||||
###Number of Halos
|
||||
### Number of Halos
|
||||
|
||||
Use `haloLayerNumber` property.
|
||||
|
||||
```
|
||||
```objc
|
||||
halo.haloLayerNumber = 3;
|
||||
```
|
||||
|
||||
###radius
|
||||
### radius
|
||||
|
||||
Use `radius` property.
|
||||
|
||||
````
|
||||
```objc
|
||||
self.halo.radius = 240.0;
|
||||
````
|
||||
```
|
||||
|
||||
###color
|
||||
### color
|
||||
|
||||
Use `backgroundColor` property.
|
||||
|
||||
````
|
||||
```objc
|
||||
UIColor *color = [UIColor colorWithRed:0.7
|
||||
green:0.9
|
||||
blue:0.3
|
||||
alpha:1.0];
|
||||
|
||||
self.halo.backgroundColor = color.CGColor;
|
||||
````
|
||||
```
|
||||
|
||||
###animation duration
|
||||
### animation duration
|
||||
|
||||
Use `animationDuration` or `pulseInterval` property.
|
||||
|
||||
|
||||
###animation repeat count
|
||||
### animation repeat count
|
||||
|
||||
Initialize using `initWithRepeatCount:` method, or set `repeatCount` property. The default value is `INFINITY`.
|
||||
|
||||
|
||||
###animation key values and times
|
||||
### animation key values and times
|
||||
|
||||
Use properties `fromValueForRadius`, `fromValueForAlpha` and `keyTimeForHalfOpacity`.
|
||||
Use properties `fromValueForRadius` or `keyTimeForHalfOpacity`.
|
||||
|
||||
### enable/disable timing function for animation
|
||||
|
||||
###enable/disable timing function for animation
|
||||
Use property `useTimingFunction`
|
||||
|
||||
##Demo
|
||||
## Demo
|
||||
|
||||
You can try to change the radius and color properties with demo app.
|
||||
|
||||
|
||||
##Special Thanks
|
||||
## Special Thanks
|
||||
|
||||
Inspired by [SVPulsingAnnotationView](https://github.com/samvermette/SVPulsingAnnotationView).
|
||||
|
||||
## Author
|
||||
|
||||
**Shuichi Tsutsumi**
|
||||
|
||||
iOS freelancer in Japan. Welcome works from abroad!
|
||||
|
||||
<a href="https://paypal.me/shu223">
|
||||
<img alt="Support via PayPal" src="https://cdn.rawgit.com/twolfson/paypal-github-button/1.0.0/dist/button.svg"/>
|
||||
</a>
|
||||
|
||||
- PAST WORKS: [My Profile Summary](https://medium.com/@shu223/my-profile-summary-f14bfc1e7099#.vdh0i7clr)
|
||||
- PROFILES: [LinkedIn](https://www.linkedin.com/in/shuichi-tsutsumi-525b755b/)
|
||||
- BLOG: [English](https://medium.com/@shu223/) / [Japanese](http://d.hatena.ne.jp/shu223/)
|
||||
- CONTACTS:
|
||||
- [Twitter](https://twitter.com/shu223)
|
||||
- [Facebook](https://www.facebook.com/shuichi.tsutsumi)
|
||||
|
||||
Reference in New Issue
Block a user