Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b27bd914b | |||
| 234ebf1d4c | |||
| 8eda4da7c0 | |||
| 2a60603b7f | |||
| bd6b6522a8 | |||
| 7b8fd4cc5c | |||
| 281d12eb46 | |||
| 7a05a62c16 |
@@ -20,6 +20,7 @@
|
||||
5E2FFB7218367C01003333F8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E2FFB5A18367C01003333F8 /* UIKit.framework */; };
|
||||
5E2FFB8E18367CA3003333F8 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E2FFB8C18367CA3003333F8 /* MainViewController.m */; };
|
||||
5E2FFB8F18367CA3003333F8 /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5E2FFB8D18367CA3003333F8 /* MainViewController.xib */; };
|
||||
5E7E40DA19C0F9CF00A0E3E0 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5E7E40D919C0F9CF00A0E3E0 /* LaunchScreen.xib */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@@ -51,6 +52,7 @@
|
||||
5E2FFB8B18367CA3003333F8 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = "<group>"; };
|
||||
5E2FFB8C18367CA3003333F8 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = "<group>"; };
|
||||
5E2FFB8D18367CA3003333F8 /* MainViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainViewController.xib; sourceTree = "<group>"; };
|
||||
5E7E40D919C0F9CF00A0E3E0 /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LaunchScreen.xib; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -122,6 +124,7 @@
|
||||
5E2FFB5D18367C01003333F8 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5E7E40D919C0F9CF00A0E3E0 /* LaunchScreen.xib */,
|
||||
5E2FFB5E18367C01003333F8 /* CWNotificationDemo-Info.plist */,
|
||||
5E2FFB5F18367C01003333F8 /* InfoPlist.strings */,
|
||||
5E2FFB6218367C01003333F8 /* main.m */,
|
||||
@@ -236,6 +239,7 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5E7E40DA19C0F9CF00A0E3E0 /* LaunchScreen.xib in Resources */,
|
||||
5E2FFB6118367C01003333F8 /* InfoPlist.strings in Resources */,
|
||||
5E2FFB8F18367CA3003333F8 /* MainViewController.xib in Resources */,
|
||||
5E2FFB6918367C01003333F8 /* Images.xcassets in Resources */,
|
||||
@@ -374,8 +378,10 @@
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "CWNotificationDemo/CWNotificationDemo-Prefix.pch";
|
||||
INFOPLIST_FILE = "CWNotificationDemo/CWNotificationDemo-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE = "";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
@@ -390,8 +396,10 @@
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "CWNotificationDemo/CWNotificationDemo-Prefix.pch";
|
||||
INFOPLIST_FILE = "CWNotificationDemo/CWNotificationDemo-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE = "";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
<string>1.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6245" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||
<dependencies>
|
||||
<deployment defaultVersion="1792" identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6238"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="iN0-l3-epB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CWStatusBarNotification" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PyY-2A-t44">
|
||||
<rect key="frame" x="119" y="279.5" width="363" height="40.5"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="34"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="centerY" secondItem="PyY-2A-t44" secondAttribute="centerY" constant="0.5" id="SYW-09-Sb1"/>
|
||||
<constraint firstAttribute="centerX" secondItem="PyY-2A-t44" secondAttribute="centerX" id="xfo-fo-hOg"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -1,7 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4514" systemVersion="13A3017" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6245" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3747"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6238"/>
|
||||
<capability name="Alignment constraints to the first baseline" minToolsVersion="6.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MainViewController">
|
||||
@@ -16,12 +17,11 @@
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DId-6z-9ak">
|
||||
<rect key="frame" x="100" y="269" width="121" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="147" y="257" width="121" height="30"/>
|
||||
<state key="normal" title="Show Notification">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
@@ -30,36 +30,32 @@
|
||||
</connections>
|
||||
</button>
|
||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="10" translatesAutoresizingMaskIntoConstraints="NO" id="lnj-T4-sfz">
|
||||
<rect key="frame" x="18" y="159" width="284" height="34"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="18" y="150" width="378" height="31"/>
|
||||
<connections>
|
||||
<action selector="sliderDurationChanged:" destination="-1" eventType="valueChanged" id="bHo-Bt-cG4"/>
|
||||
</connections>
|
||||
</slider>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Duration: " lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nHX-St-Osi">
|
||||
<rect key="frame" x="20" y="200" width="75" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="20" y="189" width="75" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="75" id="Bek-Lg-K7h"/>
|
||||
<constraint firstAttribute="height" constant="21" id="M5r-vA-0qr"/>
|
||||
<constraint firstAttribute="width" constant="75" id="PQ4-ZU-uu9"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oAK-DR-B27">
|
||||
<rect key="frame" x="103" y="200" width="197" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="103" y="189" width="291" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Notification Message" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="VqG-wR-oYI">
|
||||
<rect key="frame" x="20" y="229" width="280" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="20" y="217" width="374" height="30"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
</textField>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="Bza-7R-910">
|
||||
<rect key="frame" x="20" y="123" width="280" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="20" y="114" width="374" height="29"/>
|
||||
<segments>
|
||||
<segment title="To Top"/>
|
||||
<segment title="To Bottom"/>
|
||||
@@ -68,8 +64,7 @@
|
||||
</segments>
|
||||
</segmentedControl>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="vWx-wx-d32">
|
||||
<rect key="frame" x="20" y="87" width="280" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="20" y="78" width="374" height="29"/>
|
||||
<segments>
|
||||
<segment title="From Top"/>
|
||||
<segment title="From Bottom"/>
|
||||
@@ -80,28 +75,34 @@
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<constraints>
|
||||
<constraint firstItem="nHX-St-Osi" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="4tg-Qw-ILZ"/>
|
||||
<constraint firstItem="lnj-T4-sfz" firstAttribute="top" secondItem="Bza-7R-910" secondAttribute="bottom" constant="8" id="6cG-SS-RNU"/>
|
||||
<constraint firstItem="VqG-wR-oYI" firstAttribute="top" secondItem="nHX-St-Osi" secondAttribute="bottom" constant="8" id="9hr-jC-jbb"/>
|
||||
<constraint firstAttribute="centerX" secondItem="DId-6z-9ak" secondAttribute="centerX" constant="-0.5" id="ECT-G3-ltp"/>
|
||||
<constraint firstItem="VqG-wR-oYI" firstAttribute="top" secondItem="lnj-T4-sfz" secondAttribute="bottom" constant="37" id="Iej-w9-X3g"/>
|
||||
<constraint firstItem="VqG-wR-oYI" firstAttribute="top" secondItem="oAK-DR-B27" secondAttribute="bottom" constant="8" id="PaN-1y-iK6"/>
|
||||
<constraint firstAttribute="trailing" secondItem="oAK-DR-B27" secondAttribute="trailing" constant="20" id="RHA-aR-sFs"/>
|
||||
<constraint firstItem="Bza-7R-910" firstAttribute="top" secondItem="vWx-wx-d32" secondAttribute="bottom" constant="8" id="Th2-HC-3XF"/>
|
||||
<constraint firstItem="lnj-T4-sfz" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="WB4-6Z-Na6"/>
|
||||
<constraint firstItem="DId-6z-9ak" firstAttribute="top" secondItem="VqG-wR-oYI" secondAttribute="bottom" constant="10" id="WNV-wr-Bat"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Bza-7R-910" secondAttribute="trailing" constant="20" id="h9H-xz-Gmn"/>
|
||||
<constraint firstItem="vWx-wx-d32" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="iK5-oo-S2I"/>
|
||||
<constraint firstAttribute="trailing" secondItem="lnj-T4-sfz" secondAttribute="trailing" constant="20" id="mKo-JE-12D"/>
|
||||
<constraint firstItem="VqG-wR-oYI" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="rSQ-BG-N1Y"/>
|
||||
<constraint firstItem="oAK-DR-B27" firstAttribute="leading" secondItem="nHX-St-Osi" secondAttribute="trailing" constant="8" id="s0T-uS-rNG"/>
|
||||
<constraint firstItem="Bza-7R-910" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="tZA-D2-wfU"/>
|
||||
<constraint firstAttribute="trailing" secondItem="vWx-wx-d32" secondAttribute="trailing" constant="20" id="wbE-dB-geM"/>
|
||||
<constraint firstAttribute="trailing" secondItem="VqG-wR-oYI" secondAttribute="trailing" constant="20" id="wx3-Mc-klx"/>
|
||||
<constraint firstAttribute="centerY" secondItem="DId-6z-9ak" secondAttribute="centerY" id="ynw-tb-3sz"/>
|
||||
<constraint firstItem="lnj-T4-sfz" firstAttribute="leading" secondItem="nHX-St-Osi" secondAttribute="leading" id="7da-li-6Kn"/>
|
||||
<constraint firstItem="vWx-wx-d32" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="8hY-Bj-MI2"/>
|
||||
<constraint firstItem="oAK-DR-B27" firstAttribute="leading" secondItem="nHX-St-Osi" secondAttribute="trailing" constant="8" symbolic="YES" id="9ki-g4-vZj"/>
|
||||
<constraint firstItem="oAK-DR-B27" firstAttribute="trailing" secondItem="lnj-T4-sfz" secondAttribute="trailing" id="DF9-5s-ORR"/>
|
||||
<constraint firstItem="nHX-St-Osi" firstAttribute="firstBaseline" secondItem="oAK-DR-B27" secondAttribute="firstBaseline" id="ELp-HE-4nH"/>
|
||||
<constraint firstItem="VqG-wR-oYI" firstAttribute="top" secondItem="nHX-St-Osi" secondAttribute="bottom" constant="7" id="I7c-GM-lko"/>
|
||||
<constraint firstItem="vWx-wx-d32" firstAttribute="top" secondItem="1" secondAttribute="top" constant="78" id="UEb-Dv-gVI"/>
|
||||
<constraint firstItem="DId-6z-9ak" firstAttribute="centerX" secondItem="VqG-wR-oYI" secondAttribute="centerX" id="UR8-ES-cIh"/>
|
||||
<constraint firstItem="DId-6z-9ak" firstAttribute="top" secondItem="VqG-wR-oYI" secondAttribute="bottom" constant="10" id="ZgW-j6-ji5"/>
|
||||
<constraint firstItem="VqG-wR-oYI" firstAttribute="trailing" secondItem="oAK-DR-B27" secondAttribute="trailing" id="ca3-UN-5wh"/>
|
||||
<constraint firstItem="vWx-wx-d32" firstAttribute="trailing" secondItem="Bza-7R-910" secondAttribute="trailing" id="exg-le-qML"/>
|
||||
<constraint firstItem="Bza-7R-910" firstAttribute="leading" secondItem="vWx-wx-d32" secondAttribute="leading" id="iGR-gp-5UT"/>
|
||||
<constraint firstItem="lnj-T4-sfz" firstAttribute="top" secondItem="Bza-7R-910" secondAttribute="bottom" constant="8" symbolic="YES" id="iOO-Sk-CU0"/>
|
||||
<constraint firstItem="Bza-7R-910" firstAttribute="trailing" secondItem="lnj-T4-sfz" secondAttribute="trailing" id="pZ0-3h-ZuL"/>
|
||||
<constraint firstItem="VqG-wR-oYI" firstAttribute="leading" secondItem="nHX-St-Osi" secondAttribute="leading" id="qTt-Y1-xfG"/>
|
||||
<constraint firstItem="lnj-T4-sfz" firstAttribute="leading" secondItem="Bza-7R-910" secondAttribute="leading" id="tXW-Jb-JXr"/>
|
||||
<constraint firstItem="vWx-wx-d32" firstAttribute="centerX" secondItem="1" secondAttribute="centerX" id="ulj-gO-yBc"/>
|
||||
<constraint firstItem="nHX-St-Osi" firstAttribute="top" secondItem="lnj-T4-sfz" secondAttribute="bottom" constant="9" id="w3P-gu-lkL"/>
|
||||
<constraint firstItem="nHX-St-Osi" firstAttribute="baseline" secondItem="oAK-DR-B27" secondAttribute="baseline" id="xJd-gb-3E0"/>
|
||||
<constraint firstItem="Bza-7R-910" firstAttribute="top" secondItem="vWx-wx-d32" secondAttribute="bottom" constant="8" symbolic="YES" id="yyp-bu-hx4"/>
|
||||
</constraints>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
|
||||
<simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/>
|
||||
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||
<simulatedStatusBarMetrics key="statusBar"/>
|
||||
<simulatedOrientationMetrics key="orientation"/>
|
||||
<simulatedScreenMetrics key="destination" type="retina4"/>
|
||||
</simulatedMetricsContainer>
|
||||
</document>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "CWStatusBarNotification"
|
||||
s.version = "2.1.1"
|
||||
s.version = "2.1.2"
|
||||
s.summary = "A library that creates status bar notifications."
|
||||
s.description = "CWStatusBarNotification is a library allows you to present a beautiful text-based notification in the status bar."
|
||||
s.homepage = "http://github.com/cezarywojcik/CWStatusBarNotification"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
typedef void(^CompletionBlock)(void);
|
||||
typedef void(^CWCompletionBlock)(void);
|
||||
|
||||
@interface ScrollLabel : UILabel
|
||||
- (CGFloat)scrollTime;
|
||||
@@ -44,7 +44,7 @@ typedef NS_ENUM(NSInteger, CWNotificationAnimationType) {
|
||||
|
||||
@property (strong, nonatomic) UIView *statusBarView;
|
||||
|
||||
@property (copy, nonatomic) CompletionBlock notificationTappedBlock;
|
||||
@property (copy, nonatomic) CWCompletionBlock notificationTappedBlock;
|
||||
|
||||
@property (nonatomic) CWNotificationAnimationStyle notificationStyle;
|
||||
@property (nonatomic) CWNotificationAnimationStyle notificationAnimationInStyle;
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#import <QuartzCore/QuartzCore.h>
|
||||
#import "CWStatusBarNotification.h"
|
||||
|
||||
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
|
||||
|
||||
#define STATUS_BAR_ANIMATION_LENGTH 0.25f
|
||||
#define FONT_SIZE 12.0f
|
||||
#define PADDING 10.0f
|
||||
@@ -183,7 +185,7 @@ static void cancel_delayed_block(CWDelayedBlockHandle delayedHandle)
|
||||
return self.notificationLabelHeight;
|
||||
}
|
||||
CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
|
||||
if (UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
|
||||
if (SYSTEM_VERSION_LESS_THAN(@"8.0") && UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
|
||||
statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.width;
|
||||
}
|
||||
return statusBarHeight > 0 ? statusBarHeight : 20;
|
||||
@@ -191,35 +193,43 @@ static void cancel_delayed_block(CWDelayedBlockHandle delayedHandle)
|
||||
|
||||
- (CGFloat)getStatusBarWidth
|
||||
{
|
||||
if (UIDeviceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) {
|
||||
return [UIScreen mainScreen].bounds.size.width;
|
||||
if (SYSTEM_VERSION_LESS_THAN(@"8.0") && UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
|
||||
return [UIScreen mainScreen].bounds.size.height;
|
||||
}
|
||||
return [UIScreen mainScreen].bounds.size.height;
|
||||
return [UIScreen mainScreen].bounds.size.width;
|
||||
}
|
||||
|
||||
- (CGFloat)getStatusBarOffset
|
||||
{
|
||||
if ([self getStatusBarHeight] == 40.0f) {
|
||||
return -20.0f;
|
||||
}
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
- (CGRect)getNotificationLabelTopFrame
|
||||
{
|
||||
return CGRectMake(0, -1*[self getNotificationLabelHeight], [self getStatusBarWidth], [self getNotificationLabelHeight]);
|
||||
return CGRectMake(0, [self getStatusBarOffset] + -1*[self getNotificationLabelHeight], [self getStatusBarWidth], [self getNotificationLabelHeight]);
|
||||
}
|
||||
|
||||
- (CGRect)getNotificationLabelLeftFrame
|
||||
{
|
||||
return CGRectMake(-1*[self getStatusBarWidth], 0, [self getStatusBarWidth], [self getNotificationLabelHeight]);
|
||||
return CGRectMake(-1*[self getStatusBarWidth], [self getStatusBarOffset], [self getStatusBarWidth], [self getNotificationLabelHeight]);
|
||||
}
|
||||
|
||||
- (CGRect)getNotificationLabelRightFrame
|
||||
{
|
||||
return CGRectMake([self getStatusBarWidth], 0, [self getStatusBarWidth], [self getNotificationLabelHeight]);
|
||||
return CGRectMake([self getStatusBarWidth], [self getStatusBarOffset], [self getStatusBarWidth], [self getNotificationLabelHeight]);
|
||||
}
|
||||
|
||||
- (CGRect)getNotificationLabelBottomFrame
|
||||
{
|
||||
return CGRectMake(0, [self getNotificationLabelHeight], [self getStatusBarWidth], 0);
|
||||
return CGRectMake(0, [self getStatusBarOffset] + [self getNotificationLabelHeight], [self getStatusBarWidth], 0);
|
||||
}
|
||||
|
||||
- (CGRect)getNotificationLabelFrame
|
||||
{
|
||||
return CGRectMake(0, 0, [self getStatusBarWidth], [self getNotificationLabelHeight]);
|
||||
return CGRectMake(0, [self getStatusBarOffset], [self getStatusBarWidth], [self getNotificationLabelHeight]);
|
||||
}
|
||||
|
||||
- (CGFloat)getNavigationBarHeight
|
||||
@@ -245,7 +255,7 @@ static void cancel_delayed_block(CWDelayedBlockHandle delayedHandle)
|
||||
|
||||
# pragma mark - screen orientation change
|
||||
|
||||
- (void)screenOrientationChanged
|
||||
- (void)updateStatusBarFrame
|
||||
{
|
||||
self.notificationLabel.frame = [self getNotificationLabelFrame];
|
||||
self.statusBarView.hidden = YES;
|
||||
@@ -341,7 +351,7 @@ static void cancel_delayed_block(CWDelayedBlockHandle delayedHandle)
|
||||
case CWNotificationAnimationStyleBottom:
|
||||
self.statusBarView.frame = [self getNotificationLabelTopFrame];
|
||||
self.notificationLabel.layer.anchorPoint = CGPointMake(0.5f, 1.0f);
|
||||
self.notificationLabel.center = CGPointMake(self.notificationLabel.center.x, [self getNotificationLabelHeight]);
|
||||
self.notificationLabel.center = CGPointMake(self.notificationLabel.center.x, [self getStatusBarOffset] + [self getNotificationLabelHeight]);
|
||||
break;
|
||||
case CWNotificationAnimationStyleLeft:
|
||||
self.statusBarView.frame = [self getNotificationLabelRightFrame];
|
||||
@@ -360,7 +370,7 @@ static void cancel_delayed_block(CWDelayedBlockHandle delayedHandle)
|
||||
self.notificationLabel.frame = [self getNotificationLabelTopFrame];
|
||||
break;
|
||||
case CWNotificationAnimationStyleBottom:
|
||||
self.notificationLabel.transform = CGAffineTransformMakeScale(1.0f, 0.0f);
|
||||
self.notificationLabel.transform = CGAffineTransformMakeScale(1.0f, 0.01f);
|
||||
break;
|
||||
case CWNotificationAnimationStyleLeft:
|
||||
self.notificationLabel.frame = [self getNotificationLabelLeftFrame];
|
||||
@@ -393,7 +403,10 @@ static void cancel_delayed_block(CWDelayedBlockHandle delayedHandle)
|
||||
[self.notificationWindow setHidden:NO];
|
||||
|
||||
// checking for screen orientation change
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenOrientationChanged) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateStatusBarFrame) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
|
||||
|
||||
// checking for status bar change
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateStatusBarFrame) name:UIApplicationWillChangeStatusBarFrameNotification object:nil];
|
||||
|
||||
// animate
|
||||
[UIView animateWithDuration:STATUS_BAR_ANIMATION_LENGTH animations:^{
|
||||
@@ -424,6 +437,7 @@ static void cancel_delayed_block(CWDelayedBlockHandle delayedHandle)
|
||||
self.notificationIsShowing = NO;
|
||||
self.notificationIsDismissing = NO;
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillChangeStatusBarFrameNotification object:nil];
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013 Cezary Wojcik <http://www.cezarywojcik.com>
|
||||
Copyright (c) 2014 Cezary Wojcik <http://www.cezarywojcik.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
[](https://travis-ci.org/cezarywojcik/CWStatusBarNotification)
|
||||
|
||||
**NOTE:** You can find a `Swift` implementation of this library [in the swift branch of this repo](https://github.com/cezarywojcik/CWStatusBarNotification/tree/swift).
|
||||
|
||||
`CWStatusBarNotification` is a library that allows you to easily create text-based notifications that appear on the status bar.
|
||||
|
||||

|
||||
@@ -16,7 +18,7 @@ Works for iPhone and iPad.
|
||||
|
||||
### CocoaPods
|
||||
|
||||
`pod 'CWStatusBarNotification', '~> 2.1.1'`
|
||||
`pod 'CWStatusBarNotification', '~> 2.1.2'`
|
||||
|
||||
### Manual
|
||||
|
||||
@@ -124,7 +126,7 @@ The notifications will work in both screen orientations, however, screen rotatio
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013 Cezary Wojcik <http://www.cezarywojcik.com>
|
||||
Copyright (c) 2014 Cezary Wojcik <http://www.cezarywojcik.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
Reference in New Issue
Block a user