mirror of
https://github.com/devxoul/Toaster.git
synced 2026-01-18 21:21:19 +01:00
JLToast is now Toaster
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
import UIKit
|
||||
import JLToast
|
||||
import Toaster
|
||||
|
||||
class RootViewController: UIViewController {
|
||||
|
||||
@@ -33,9 +33,9 @@ class RootViewController: UIViewController {
|
||||
}
|
||||
|
||||
func showButtonTouchUpInside() {
|
||||
JLToast.makeText("Basic JLToast").show()
|
||||
JLToast.makeText("You can set duration. `JLToastDelay.ShortDelay` means 2 seconds.\n" +
|
||||
"`JLToastDelay.LongDelay` means 3.5 seconds.", duration: JLToastDelay.LongDelay).show()
|
||||
JLToast.makeText("With delay, JLToast will be shown after delay.", delay: 1, duration: 5).show()
|
||||
Toast.makeText("Basic Toaster").show()
|
||||
Toast.makeText("You can set duration. `ToastDelay.ShortDelay` means 2 seconds.\n" +
|
||||
"`ToastDelay.LongDelay` means 3.5 seconds.", duration: ToastDelay.LongDelay).show()
|
||||
Toast.makeText("With delay, Toaster will be shown after delay.", delay: 1, duration: 5).show()
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "JLToast"
|
||||
s.version = "1.4.2"
|
||||
s.summary = "Toast UI for Swift - Android-like toast with very simple interface."
|
||||
s.homepage = "http://github.com/devxoul/JLToast"
|
||||
s.license = { :type => 'WTFPL', :file => 'LICENSE' }
|
||||
s.author = { "devxoul" => "devxoul@gmail.com" }
|
||||
s.source = { :git => "https://github.com/devxoul/JLToast.git",
|
||||
:tag => "#{s.version}" }
|
||||
s.platform = :ios, '8.0'
|
||||
s.source_files = 'JLToast/*.{swift,h}'
|
||||
s.public_header_files = 'JLToast/JLToast.h'
|
||||
s.frameworks = 'UIKit', 'Foundation', 'QuartzCore'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
* Version 2, December 2004
|
||||
*
|
||||
* Copyright (C) 2013-2015 Suyeol Jeon <devxoul@gmail.com>
|
||||
*
|
||||
* Everyone is permitted to copy and distribute verbatim or modified
|
||||
* copies of this license document, and changing it is allowed as long
|
||||
* as the name is changed.
|
||||
*
|
||||
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
* TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
*
|
||||
* 0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
*
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
FOUNDATION_EXPORT double JLToastVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char JLToastVersionString[];
|
||||
|
||||
#if __OBJC__
|
||||
static NSTimeInterval const JLToastShortDelay = 2.0;
|
||||
static NSTimeInterval const JLToastLongDelay = 3.5;
|
||||
static NSString * const JLToastViewBackgroundColorAttributeName = @"JLToastViewBackgroundColorAttributeName";
|
||||
static NSString * const JLToastViewCornerRadiusAttributeName = @"JLToastViewCornerRadiusAttributeName";
|
||||
static NSString * const JLToastViewTextInsetsAttributeName = @"JLToastViewTextInsetsAttributeName";
|
||||
static NSString * const JLToastViewTextColorAttributeName = @"JLToastViewTextColorAttributeName";
|
||||
static NSString * const JLToastViewFontAttributeName = @"JLToastViewFontAttributeName";
|
||||
static NSString * const JLToastViewPortraitOffsetYAttributeName = @"JLToastViewPortraitOffsetYAttributeName";
|
||||
static NSString * const JLToastViewLandscapeOffsetYAttributeName = @"JLToastViewLandscapeOffsetYAttributeName";
|
||||
#endif
|
||||
@@ -1,24 +0,0 @@
|
||||
<?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>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,33 +0,0 @@
|
||||
//
|
||||
// JLToastTests.swift
|
||||
// JLToastTests
|
||||
//
|
||||
// Created by 전수열 on 10/15/15.
|
||||
// Copyright © 2015 Suyeol Jeon. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import JLToast
|
||||
|
||||
class JLToastTests: XCTestCase {
|
||||
|
||||
override func setUp() {
|
||||
super.setUp()
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
override func tearDown() {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
func testExample() {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
}
|
||||
|
||||
func testPerformanceExample() {
|
||||
// This is an example of a performance test case.
|
||||
}
|
||||
|
||||
}
|
||||
76
README.md
76
README.md
@@ -1,8 +1,8 @@
|
||||
JLToast - Toast for Swift
|
||||
Toaster - Toast for Swift
|
||||
=========================
|
||||
|
||||

|
||||
[](http://cocoapods.org/?q=name%3AJLToast%20author%3Adevxoul)
|
||||
[](http://cocoapods.org/?q=name%3AToaster%20author%3Adevxoul)
|
||||
[](https://github.com/Carthage/Carthage)
|
||||
|
||||
Android-like toast with very simple interface.
|
||||
@@ -12,16 +12,15 @@ At a Glance
|
||||
-----------
|
||||
|
||||
```swift
|
||||
JLToast.makeText("Some text").show()
|
||||
Toast.makeText("Some text").show()
|
||||
```
|
||||
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- **Objective-C Compatible**: import `JLToast.h` to use JLToast in Objective-C.
|
||||
- **Queueing**: centralized toast center manages toast queue.
|
||||
- **Customizable**: see [Appearance](https://github.com/devxoul/JLToast#appearance) section.
|
||||
- **Customizable**: see [Appearance](https://github.com/devxoul/Toaster#appearance) section.
|
||||
|
||||
|
||||
Installation
|
||||
@@ -30,45 +29,28 @@ Installation
|
||||
- **For iOS 8+ projects with [CocoaPods](https://cocoapods.org):**
|
||||
|
||||
```ruby
|
||||
pod 'JLToast', '~> 1.4'
|
||||
pod 'Toaster', '~> 1.4'
|
||||
```
|
||||
|
||||
- **For iOS 8+ projects with [Carthage](https://github.com/Carthage/Carthage):**
|
||||
|
||||
```
|
||||
github "devxoul/JLToast" ~> 1.0
|
||||
github "devxoul/Toaster" ~> 1.0
|
||||
```
|
||||
|
||||
- **For iOS 7 projects:** I recommend you to try [CocoaSeeds](https://github.com/devxoul/CocoaSeeds), which uses source code instead of dynamic frameworks. Sample Seedfile:
|
||||
|
||||
```ruby
|
||||
github 'devxoul/JLToast', '1.4.2', :files => 'JLToast/*.{swift,h}'
|
||||
github 'devxoul/Toaster', '1.4.2', :files => 'Sources/*.{swift,h}'
|
||||
```
|
||||
|
||||
|
||||
Objective-C
|
||||
-----------
|
||||
|
||||
JLToast is compatible with Objective-C. What you need to do is to import a auto-generated header file:
|
||||
|
||||
```objc
|
||||
#import <JLToast/JLToast-Swift.h>
|
||||
```
|
||||
|
||||
If you are looking for constants, import `JLToast.h`.
|
||||
|
||||
```objc
|
||||
#import <JLToast/JLToast-Swift.h>
|
||||
#import <JLToast/JLToast.h> // if you want to use constants
|
||||
```
|
||||
|
||||
|
||||
Setting Duration and Delay
|
||||
--------------------------
|
||||
|
||||
```swift
|
||||
JLToast.makeText("Some text", duration: JLToastDelay.LongDelay)
|
||||
JLToast.makeText("Some text", delay: 1, duration: JLToastDelay.ShortDelay)
|
||||
Toast.makeText("Some text", duration: ToastDelay.LongDelay)
|
||||
Toast.makeText("Some text", delay: 1, duration: ToastDelay.ShortDelay)
|
||||
```
|
||||
|
||||
|
||||
@@ -78,7 +60,7 @@ Removing Toasts
|
||||
- **Removing toast with reference**:
|
||||
|
||||
```swift
|
||||
let toast = JLToast.makeText("Hello")
|
||||
let toast = Toast.makeText("Hello")
|
||||
toast.show()
|
||||
toast.cancel() // remove toast immediately
|
||||
```
|
||||
@@ -86,7 +68,7 @@ Removing Toasts
|
||||
- **Removing current toast**:
|
||||
|
||||
```swift
|
||||
if let currentToast = JLToastCenter.defaultCenter.currentToast {
|
||||
if let currentToast = ToastCenter.defaultCenter.currentToast {
|
||||
currentToast.cancel()
|
||||
}
|
||||
```
|
||||
@@ -94,56 +76,46 @@ Removing Toasts
|
||||
- **Removing all toasts**:
|
||||
|
||||
```swift
|
||||
JLToastCenter.defaultCenter.cancelAllToasts()
|
||||
ToastCenter.defaultCenter.cancelAllToasts()
|
||||
```
|
||||
|
||||
|
||||
Appearance
|
||||
----------
|
||||
|
||||
Since JLToast 1.1.0, you can set default values for appearance attributes. The code below sets default background color to red.
|
||||
Since Toaster 1.1.0, you can set default values for appearance attributes. The code below sets default background color to red.
|
||||
|
||||
> **Note:** It is not recommended to set default values while toasts are queued. It can occur unexpected results.
|
||||
|
||||
**Swift**
|
||||
|
||||
```swift
|
||||
JLToastView.setDefaultValue(
|
||||
ToastView.setDefaultValue(
|
||||
UIColor.redColor(),
|
||||
forAttributeName: JLToastViewBackgroundColorAttributeName,
|
||||
forAttributeName: ToastViewBackgroundColorAttributeName,
|
||||
userInterfaceIdiom: .Phone
|
||||
)
|
||||
```
|
||||
|
||||
**Objective-C**
|
||||
|
||||
```objc
|
||||
[JLToastView setDefaultValue:[UIColor redColor]
|
||||
forAttributeName:JLToastViewBackgroundColorAttributeName
|
||||
userInterfaceIdiom:UIUserInterfaceIdiomPhone];
|
||||
```
|
||||
|
||||
|
||||
#### Supported Attributes
|
||||
|
||||
| Attribute | Type | Description |
|
||||
|---|---|---|
|
||||
| `JLToastViewBackgroundColorAttributeName` | `UIColor` | Background color |
|
||||
| `JLToastViewCornerRadiusAttributeName` | `NSNumber(CGFloat)` | Corner radius |
|
||||
| `JLToastViewTextInsetsAttributeName` | `NSValue(UIEdgeInsets)` | Text inset |
|
||||
| `JLToastViewTextColorAttributeName` | `UIColor` | Text color |
|
||||
| `JLToastViewFontAttributeName` | `UIFont` | Font |
|
||||
| `JLToastViewPortraitOffsetYAttributeName` | `NSNumber(CGFloat)` | Vertical offfset from bottom in portrait mode |
|
||||
|` JLToastViewLandscapeOffsetYAttributeName` | `NSNumber(CGFloat)` | Vertical offfset from bottom in landscape mode |
|
||||
| `ToastViewBackgroundColorAttributeName` | `UIColor` | Background color |
|
||||
| `ToastViewCornerRadiusAttributeName` | `NSNumber(CGFloat)` | Corner radius |
|
||||
| `ToastViewTextInsetsAttributeName` | `NSValue(UIEdgeInsets)` | Text inset |
|
||||
| `ToastViewTextColorAttributeName` | `UIColor` | Text color |
|
||||
| `ToastViewFontAttributeName` | `UIFont` | Font |
|
||||
| `ToastViewPortraitOffsetYAttributeName` | `NSNumber(CGFloat)` | Vertical offfset from bottom in portrait mode |
|
||||
|` ToastViewLandscapeOffsetYAttributeName` | `NSNumber(CGFloat)` | Vertical offfset from bottom in landscape mode |
|
||||
|
||||
|
||||
Screenshots
|
||||
-----------
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
JLToast is under [WTFPL](http://www.wtfpl.net/). You can do what the fuck you want with JLToast. See [LICENSE](LICENSE) file for more info.
|
||||
Toaster is under [WTFPL](http://www.wtfpl.net/). You can do what the fuck you want with Toast. See [LICENSE](LICENSE) file for more info.
|
||||
|
||||
|
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 280 KiB |
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* JLToast.swift
|
||||
* Toast.swift
|
||||
*
|
||||
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
* Version 2, December 2004
|
||||
@@ -19,14 +19,14 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
public struct JLToastDelay {
|
||||
public struct ToastDelay {
|
||||
public static let ShortDelay: TimeInterval = 2.0
|
||||
public static let LongDelay: TimeInterval = 3.5
|
||||
}
|
||||
|
||||
@objc public class JLToast: Operation {
|
||||
@objc public class Toast: Operation {
|
||||
|
||||
public var view: JLToastView = JLToastView()
|
||||
public var view: ToastView = ToastView()
|
||||
|
||||
public var text: String? {
|
||||
get {
|
||||
@@ -38,7 +38,7 @@ public struct JLToastDelay {
|
||||
}
|
||||
|
||||
public var delay: TimeInterval = 0
|
||||
public var duration: TimeInterval = JLToastDelay.ShortDelay
|
||||
public var duration: TimeInterval = ToastDelay.ShortDelay
|
||||
|
||||
private var _executing = false
|
||||
override public var isExecuting: Bool {
|
||||
@@ -64,16 +64,16 @@ public struct JLToastDelay {
|
||||
}
|
||||
}
|
||||
|
||||
public class func makeText(_ text: String) -> JLToast {
|
||||
return JLToast.makeText(text, delay: 0, duration: JLToastDelay.ShortDelay)
|
||||
public class func makeText(_ text: String) -> Toast {
|
||||
return Toast.makeText(text, delay: 0, duration: ToastDelay.ShortDelay)
|
||||
}
|
||||
|
||||
public class func makeText(_ text: String, duration: TimeInterval) -> JLToast {
|
||||
return JLToast.makeText(text, delay: 0, duration: duration)
|
||||
public class func makeText(_ text: String, duration: TimeInterval) -> Toast {
|
||||
return Toast.makeText(text, delay: 0, duration: duration)
|
||||
}
|
||||
|
||||
public class func makeText(_ text: String, delay: TimeInterval, duration: TimeInterval) -> JLToast {
|
||||
let toast = JLToast()
|
||||
public class func makeText(_ text: String, delay: TimeInterval, duration: TimeInterval) -> Toast {
|
||||
let toast = Toast()
|
||||
toast.text = text
|
||||
toast.delay = delay
|
||||
toast.duration = duration
|
||||
@@ -81,7 +81,7 @@ public struct JLToastDelay {
|
||||
}
|
||||
|
||||
public func show() {
|
||||
JLToastCenter.defaultCenter().addToast(self)
|
||||
ToastCenter.defaultCenter().addToast(self)
|
||||
}
|
||||
|
||||
override public func start() {
|
||||
@@ -100,7 +100,7 @@ public struct JLToastDelay {
|
||||
DispatchQueue.main.async(execute: {
|
||||
self.view.updateView()
|
||||
self.view.alpha = 0
|
||||
JLToastWindow.sharedWindow.addSubview(self.view)
|
||||
ToastWindow.sharedWindow.addSubview(self.view)
|
||||
UIView.animate(
|
||||
withDuration: 0.5,
|
||||
delay: self.delay,
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* JLToastCenter.swift
|
||||
* ToastCenter.swift
|
||||
*
|
||||
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
* Version 2, December 2004
|
||||
@@ -19,19 +19,19 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
@objc public class JLToastCenter: NSObject {
|
||||
@objc public class ToastCenter: NSObject {
|
||||
|
||||
private var _queue: OperationQueue!
|
||||
|
||||
public var currentToast: JLToast? {
|
||||
return self._queue.operations.first as? JLToast
|
||||
public var currentToast: Toast? {
|
||||
return self._queue.operations.first as? Toast
|
||||
}
|
||||
|
||||
private struct Singletone {
|
||||
static let defaultCenter = JLToastCenter()
|
||||
static let defaultCenter = ToastCenter()
|
||||
}
|
||||
|
||||
public class func defaultCenter() -> JLToastCenter {
|
||||
public class func defaultCenter() -> ToastCenter {
|
||||
return Singletone.defaultCenter
|
||||
}
|
||||
|
||||
@@ -47,13 +47,13 @@ import UIKit
|
||||
)
|
||||
}
|
||||
|
||||
public func addToast(_ toast: JLToast) {
|
||||
public func addToast(_ toast: Toast) {
|
||||
self._queue.addOperation(toast)
|
||||
}
|
||||
|
||||
func deviceOrientationDidChange(_ sender: AnyObject?) {
|
||||
if self._queue.operations.count > 0 {
|
||||
let lastToast: JLToast = _queue.operations[0] as! JLToast
|
||||
let lastToast: Toast = _queue.operations[0] as! Toast
|
||||
lastToast.view.updateView()
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* JLToastView.swift
|
||||
* ToastView.swift
|
||||
*
|
||||
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
* Version 2, December 2004
|
||||
@@ -19,15 +19,15 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
public let JLToastViewBackgroundColorAttributeName = "JLToastViewBackgroundColorAttributeName"
|
||||
public let JLToastViewCornerRadiusAttributeName = "JLToastViewCornerRadiusAttributeName"
|
||||
public let JLToastViewTextInsetsAttributeName = "JLToastViewTextInsetsAttributeName"
|
||||
public let JLToastViewTextColorAttributeName = "JLToastViewTextColorAttributeName"
|
||||
public let JLToastViewFontAttributeName = "JLToastViewFontAttributeName"
|
||||
public let JLToastViewPortraitOffsetYAttributeName = "JLToastViewPortraitOffsetYAttributeName"
|
||||
public let JLToastViewLandscapeOffsetYAttributeName = "JLToastViewLandscapeOffsetYAttributeName"
|
||||
public let ToastViewBackgroundColorAttributeName = "ToastViewBackgroundColorAttributeName"
|
||||
public let ToastViewCornerRadiusAttributeName = "ToastViewCornerRadiusAttributeName"
|
||||
public let ToastViewTextInsetsAttributeName = "ToastViewTextInsetsAttributeName"
|
||||
public let ToastViewTextColorAttributeName = "ToastViewTextColorAttributeName"
|
||||
public let ToastViewFontAttributeName = "ToastViewFontAttributeName"
|
||||
public let ToastViewPortraitOffsetYAttributeName = "ToastViewPortraitOffsetYAttributeName"
|
||||
public let ToastViewLandscapeOffsetYAttributeName = "ToastViewLandscapeOffsetYAttributeName"
|
||||
|
||||
@objc public class JLToastView: UIView {
|
||||
@objc public class ToastView: UIView {
|
||||
|
||||
public var backgroundView: UIView!
|
||||
public var textLabel: UILabel!
|
||||
@@ -43,11 +43,11 @@ public let JLToastViewLandscapeOffsetYAttributeName = "JLToastViewLandscapeOffse
|
||||
self.backgroundView = UIView()
|
||||
self.backgroundView.frame = self.bounds
|
||||
self.backgroundView.backgroundColor = type(of: self).defaultValueForAttributeName(
|
||||
JLToastViewBackgroundColorAttributeName,
|
||||
ToastViewBackgroundColorAttributeName,
|
||||
forUserInterfaceIdiom: userInterfaceIdiom
|
||||
) as? UIColor
|
||||
self.backgroundView.layer.cornerRadius = type(of: self).defaultValueForAttributeName(
|
||||
JLToastViewCornerRadiusAttributeName,
|
||||
ToastViewCornerRadiusAttributeName,
|
||||
forUserInterfaceIdiom: userInterfaceIdiom
|
||||
) as! CGFloat
|
||||
self.backgroundView.clipsToBounds = true
|
||||
@@ -56,12 +56,12 @@ public let JLToastViewLandscapeOffsetYAttributeName = "JLToastViewLandscapeOffse
|
||||
self.textLabel = UILabel()
|
||||
self.textLabel.frame = self.bounds
|
||||
self.textLabel.textColor = type(of: self).defaultValueForAttributeName(
|
||||
JLToastViewTextColorAttributeName,
|
||||
ToastViewTextColorAttributeName,
|
||||
forUserInterfaceIdiom: userInterfaceIdiom
|
||||
) as? UIColor
|
||||
self.textLabel.backgroundColor = UIColor.clear
|
||||
self.textLabel.font = type(of: self).defaultValueForAttributeName(
|
||||
JLToastViewFontAttributeName,
|
||||
ToastViewFontAttributeName,
|
||||
forUserInterfaceIdiom: userInterfaceIdiom
|
||||
) as! UIFont
|
||||
self.textLabel.numberOfLines = 0
|
||||
@@ -69,7 +69,7 @@ public let JLToastViewLandscapeOffsetYAttributeName = "JLToastViewLandscapeOffse
|
||||
self.addSubview(self.textLabel)
|
||||
|
||||
self.textInsets = (type(of: self).defaultValueForAttributeName(
|
||||
JLToastViewTextInsetsAttributeName,
|
||||
ToastViewTextInsetsAttributeName,
|
||||
forUserInterfaceIdiom: userInterfaceIdiom
|
||||
) as! NSValue).uiEdgeInsetsValue
|
||||
}
|
||||
@@ -79,7 +79,7 @@ public let JLToastViewLandscapeOffsetYAttributeName = "JLToastViewLandscapeOffse
|
||||
}
|
||||
|
||||
func updateView() {
|
||||
let containerSize = JLToastWindow.sharedWindow.frame.size
|
||||
let containerSize = ToastWindow.sharedWindow.frame.size
|
||||
let constraintSize = CGSize(width: containerSize.width * (280.0 / 320.0), height: CGFloat.greatestFiniteMagnitude)
|
||||
let textLabelSize = self.textLabel.sizeThatFits(constraintSize)
|
||||
self.textLabel.frame = CGRect(
|
||||
@@ -102,16 +102,16 @@ public let JLToastViewLandscapeOffsetYAttributeName = "JLToastViewLandscapeOffse
|
||||
|
||||
let userInterfaceIdiom = UIDevice.current.userInterfaceIdiom
|
||||
let portraitOffsetY = type(of: self).defaultValueForAttributeName(
|
||||
JLToastViewPortraitOffsetYAttributeName,
|
||||
ToastViewPortraitOffsetYAttributeName,
|
||||
forUserInterfaceIdiom: userInterfaceIdiom
|
||||
) as! CGFloat
|
||||
let landscapeOffsetY = type(of: self).defaultValueForAttributeName(
|
||||
JLToastViewLandscapeOffsetYAttributeName,
|
||||
ToastViewLandscapeOffsetYAttributeName,
|
||||
forUserInterfaceIdiom: userInterfaceIdiom
|
||||
) as! CGFloat
|
||||
|
||||
let orientation = UIApplication.shared.statusBarOrientation
|
||||
if orientation.isPortrait || !JLToastWindow.sharedWindow.shouldRotateManually {
|
||||
if orientation.isPortrait || !ToastWindow.sharedWindow.shouldRotateManually {
|
||||
width = containerSize.width
|
||||
height = containerSize.height
|
||||
y = portraitOffsetY
|
||||
@@ -140,41 +140,41 @@ public let JLToastViewLandscapeOffsetYAttributeName = "JLToastViewLandscapeOffse
|
||||
|
||||
}
|
||||
|
||||
public extension JLToastView {
|
||||
public extension ToastView {
|
||||
private struct Singleton {
|
||||
static var defaultValues: [String: [UIUserInterfaceIdiom: Any]] = [
|
||||
// backgroundView.color
|
||||
JLToastViewBackgroundColorAttributeName: [
|
||||
ToastViewBackgroundColorAttributeName: [
|
||||
.unspecified: UIColor(white: 0, alpha: 0.7)
|
||||
],
|
||||
|
||||
// backgroundView.layer.cornerRadius
|
||||
JLToastViewCornerRadiusAttributeName: [
|
||||
ToastViewCornerRadiusAttributeName: [
|
||||
.unspecified: 5
|
||||
],
|
||||
|
||||
JLToastViewTextInsetsAttributeName: [
|
||||
ToastViewTextInsetsAttributeName: [
|
||||
.unspecified: NSValue(uiEdgeInsets: UIEdgeInsets(top: 6, left: 10, bottom: 6, right: 10))
|
||||
],
|
||||
|
||||
// textLabel.textColor
|
||||
JLToastViewTextColorAttributeName: [
|
||||
ToastViewTextColorAttributeName: [
|
||||
.unspecified: UIColor.white
|
||||
],
|
||||
|
||||
// textLabel.font
|
||||
JLToastViewFontAttributeName: [
|
||||
ToastViewFontAttributeName: [
|
||||
.unspecified: UIFont.systemFont(ofSize: 12),
|
||||
.phone: UIFont.systemFont(ofSize: 12),
|
||||
.pad: UIFont.systemFont(ofSize: 16),
|
||||
],
|
||||
|
||||
JLToastViewPortraitOffsetYAttributeName: [
|
||||
ToastViewPortraitOffsetYAttributeName: [
|
||||
.unspecified: 30,
|
||||
.phone: 30,
|
||||
.pad: 60,
|
||||
],
|
||||
JLToastViewLandscapeOffsetYAttributeName: [
|
||||
ToastViewLandscapeOffsetYAttributeName: [
|
||||
.unspecified: 20,
|
||||
.phone: 20,
|
||||
.pad: 40,
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* JLToastView.swift
|
||||
* ToastView.swift
|
||||
*
|
||||
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
* Version 2, December 2004
|
||||
@@ -19,9 +19,9 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
public class JLToastWindow: UIWindow {
|
||||
public class ToastWindow: UIWindow {
|
||||
|
||||
public static let sharedWindow = JLToastWindow(frame: UIScreen.main.bounds)
|
||||
public static let sharedWindow = ToastWindow(frame: UIScreen.main.bounds)
|
||||
|
||||
/// Will not return `rootViewController` while this value is `true`. Or the rotation will be fucked in iOS 9.
|
||||
var isStatusBarOrientationChanging = false
|
||||
@@ -92,9 +92,9 @@ public class JLToastWindow: UIWindow {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
/// Bring JLToastWindow to top when another window is being shown.
|
||||
/// Bring ToastWindow to top when another window is being shown.
|
||||
func bringWindowToTop(_ notification: Notification) {
|
||||
if !(notification.object is JLToastWindow) {
|
||||
if !(notification.object is ToastWindow) {
|
||||
type(of: self).sharedWindow.isHidden = true
|
||||
type(of: self).sharedWindow.isHidden = false
|
||||
}
|
||||
@@ -134,7 +134,7 @@ public class JLToastWindow: UIWindow {
|
||||
self.frame.origin = .zero
|
||||
|
||||
DispatchQueue.main.async {
|
||||
JLToastCenter.defaultCenter().currentToast?.view.updateView()
|
||||
ToastCenter.defaultCenter().currentToast?.view.updateView()
|
||||
}
|
||||
}
|
||||
|
||||
33
Sources/Toaster.h
Normal file
33
Sources/Toaster.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
* Version 2, December 2004
|
||||
*
|
||||
* Copyright (C) 2013-2015 Suyeol Jeon <devxoul@gmail.com>
|
||||
*
|
||||
* Everyone is permitted to copy and distribute verbatim or modified
|
||||
* copies of this license document, and changing it is allowed as long
|
||||
* as the name is changed.
|
||||
*
|
||||
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
* TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
*
|
||||
* 0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
*
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
FOUNDATION_EXPORT double ToasterVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char ToasterVersionString[];
|
||||
|
||||
#if __OBJC__
|
||||
static NSTimeInterval const ToastShortDelay = 2.0;
|
||||
static NSTimeInterval const ToastLongDelay = 3.5;
|
||||
static NSString * const ToastViewBackgroundColorAttributeName = @"ToastViewBackgroundColorAttributeName";
|
||||
static NSString * const ToastViewCornerRadiusAttributeName = @"ToastViewCornerRadiusAttributeName";
|
||||
static NSString * const ToastViewTextInsetsAttributeName = @"ToastViewTextInsetsAttributeName";
|
||||
static NSString * const ToastViewTextColorAttributeName = @"ToastViewTextColorAttributeName";
|
||||
static NSString * const ToastViewFontAttributeName = @"ToastViewFontAttributeName";
|
||||
static NSString * const ToastViewPortraitOffsetYAttributeName = @"ToastViewPortraitOffsetYAttributeName";
|
||||
static NSString * const ToastViewLandscapeOffsetYAttributeName = @"ToastViewLandscapeOffsetYAttributeName";
|
||||
#endif
|
||||
14
Toaster.podspec
Normal file
14
Toaster.podspec
Normal file
@@ -0,0 +1,14 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "Toaster"
|
||||
s.version = "1.4.2"
|
||||
s.summary = "Toast for Swift"
|
||||
s.homepage = "http://github.com/devxoul/Toaster"
|
||||
s.license = { :type => 'WTPFL', :file => 'LICENSE' }
|
||||
s.author = { "devxoul" => "devxoul@gmail.com" }
|
||||
s.source = { :git => "https://github.com/devxoul/Toaster.git",
|
||||
:tag => "#{s.version}" }
|
||||
s.platform = :ios, '8.0'
|
||||
s.source_files = 'Toaster/*.{swift,h}'
|
||||
s.frameworks = 'UIKit', 'Foundation', 'QuartzCore'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -7,53 +7,41 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
037A2EA91C043C9600257E51 /* JLToastWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 037A2EA81C043C9600257E51 /* JLToastWindow.swift */; };
|
||||
03A75E2F1BCF2066002E46C4 /* JLToast.h in Headers */ = {isa = PBXBuildFile; fileRef = 03A75E2E1BCF2066002E46C4 /* JLToast.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
03A75E361BCF2066002E46C4 /* JLToast.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03A75E2B1BCF2066002E46C4 /* JLToast.framework */; };
|
||||
03A75E3B1BCF2066002E46C4 /* JLToastTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A75E3A1BCF2066002E46C4 /* JLToastTests.swift */; };
|
||||
03A75E481BCF2098002E46C4 /* JLToast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A75E451BCF2098002E46C4 /* JLToast.swift */; };
|
||||
03A75E491BCF2098002E46C4 /* JLToastCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A75E461BCF2098002E46C4 /* JLToastCenter.swift */; };
|
||||
03A75E4A1BCF2098002E46C4 /* JLToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A75E471BCF2098002E46C4 /* JLToastView.swift */; };
|
||||
03A75E521BCF20D4002E46C4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A75E511BCF20D4002E46C4 /* AppDelegate.swift */; };
|
||||
03A75E591BCF20D4002E46C4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 03A75E581BCF20D4002E46C4 /* Assets.xcassets */; };
|
||||
03A75E5C1BCF20D4002E46C4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 03A75E5A1BCF20D4002E46C4 /* LaunchScreen.storyboard */; };
|
||||
03A75E621BCF2102002E46C4 /* RootViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A75E611BCF2102002E46C4 /* RootViewController.swift */; };
|
||||
0306DBA01D85D626007AE314 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0306DB9A1D85D626007AE314 /* Assets.xcassets */; };
|
||||
0306DBA11D85D626007AE314 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0306DB9B1D85D626007AE314 /* LaunchScreen.storyboard */; };
|
||||
0306DBAA1D85D62A007AE314 /* Toaster.h in Headers */ = {isa = PBXBuildFile; fileRef = 0306DBA51D85D62A007AE314 /* Toaster.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
0306DBAB1D85D62A007AE314 /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0306DBA61D85D62A007AE314 /* Toast.swift */; };
|
||||
0306DBAC1D85D62A007AE314 /* ToastCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0306DBA71D85D62A007AE314 /* ToastCenter.swift */; };
|
||||
0306DBAD1D85D62A007AE314 /* ToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0306DBA81D85D62A007AE314 /* ToastView.swift */; };
|
||||
0306DBAE1D85D62A007AE314 /* ToastWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0306DBA91D85D62A007AE314 /* ToastWindow.swift */; };
|
||||
0397CD2D1D85D6920077D82F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0306DB991D85D626007AE314 /* AppDelegate.swift */; };
|
||||
0397CD2E1D85D6930077D82F /* RootViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0306DB9E1D85D626007AE314 /* RootViewController.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
03A75E371BCF2066002E46C4 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 03A75E221BCF2066002E46C4 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 03A75E2A1BCF2066002E46C4;
|
||||
remoteInfo = JLToast;
|
||||
};
|
||||
03A75E631BCF216A002E46C4 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 03A75E221BCF2066002E46C4 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 03A75E2A1BCF2066002E46C4;
|
||||
remoteInfo = JLToast;
|
||||
remoteInfo = Toaster;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
037A2EA81C043C9600257E51 /* JLToastWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JLToastWindow.swift; sourceTree = "<group>"; };
|
||||
03A75E2B1BCF2066002E46C4 /* JLToast.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JLToast.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
03A75E2E1BCF2066002E46C4 /* JLToast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JLToast.h; sourceTree = "<group>"; };
|
||||
03A75E301BCF2066002E46C4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
03A75E351BCF2066002E46C4 /* JLToastTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = JLToastTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
03A75E3A1BCF2066002E46C4 /* JLToastTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JLToastTests.swift; sourceTree = "<group>"; };
|
||||
03A75E3C1BCF2066002E46C4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
03A75E451BCF2098002E46C4 /* JLToast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JLToast.swift; sourceTree = "<group>"; };
|
||||
03A75E461BCF2098002E46C4 /* JLToastCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JLToastCenter.swift; sourceTree = "<group>"; };
|
||||
03A75E471BCF2098002E46C4 /* JLToastView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JLToastView.swift; sourceTree = "<group>"; };
|
||||
03A75E4F1BCF20D4002E46C4 /* JLToastDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JLToastDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
03A75E511BCF20D4002E46C4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
03A75E581BCF20D4002E46C4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
03A75E5B1BCF20D4002E46C4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
03A75E5D1BCF20D4002E46C4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
03A75E611BCF2102002E46C4 /* RootViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RootViewController.swift; sourceTree = "<group>"; };
|
||||
0306DB991D85D626007AE314 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
0306DB9A1D85D626007AE314 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
0306DB9C1D85D626007AE314 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
0306DB9D1D85D626007AE314 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
0306DB9E1D85D626007AE314 /* RootViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RootViewController.swift; sourceTree = "<group>"; };
|
||||
0306DBA51D85D62A007AE314 /* Toaster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Toaster.h; sourceTree = "<group>"; };
|
||||
0306DBA61D85D62A007AE314 /* Toast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Toast.swift; sourceTree = "<group>"; };
|
||||
0306DBA71D85D62A007AE314 /* ToastCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastCenter.swift; sourceTree = "<group>"; };
|
||||
0306DBA81D85D62A007AE314 /* ToastView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastView.swift; sourceTree = "<group>"; };
|
||||
0306DBA91D85D62A007AE314 /* ToastWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastWindow.swift; sourceTree = "<group>"; };
|
||||
0306DBB01D85D62E007AE314 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
03A75E2B1BCF2066002E46C4 /* Toaster.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Toaster.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
03A75E4F1BCF20D4002E46C4 /* ToasterDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ToasterDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -64,14 +52,6 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
03A75E321BCF2066002E46C4 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03A75E361BCF2066002E46C4 /* JLToast.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
03A75E4C1BCF20D4002E46C4 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -82,12 +62,44 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
0306DB981D85D626007AE314 /* Demo */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0306DB991D85D626007AE314 /* AppDelegate.swift */,
|
||||
0306DB9E1D85D626007AE314 /* RootViewController.swift */,
|
||||
0306DB9A1D85D626007AE314 /* Assets.xcassets */,
|
||||
0306DB9B1D85D626007AE314 /* LaunchScreen.storyboard */,
|
||||
0306DB9D1D85D626007AE314 /* Info.plist */,
|
||||
);
|
||||
path = Demo;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0306DBA41D85D62A007AE314 /* Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0306DBA51D85D62A007AE314 /* Toaster.h */,
|
||||
0306DBA61D85D62A007AE314 /* Toast.swift */,
|
||||
0306DBA71D85D62A007AE314 /* ToastCenter.swift */,
|
||||
0306DBA81D85D62A007AE314 /* ToastView.swift */,
|
||||
0306DBA91D85D62A007AE314 /* ToastWindow.swift */,
|
||||
);
|
||||
path = Sources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0306DBAF1D85D62E007AE314 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0306DBB01D85D62E007AE314 /* Info.plist */,
|
||||
);
|
||||
path = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03A75E211BCF2066002E46C4 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03A75E2D1BCF2066002E46C4 /* JLToast */,
|
||||
03A75E391BCF2066002E46C4 /* JLToastTests */,
|
||||
03A75E501BCF20D4002E46C4 /* JLToastDemo */,
|
||||
0306DBA41D85D62A007AE314 /* Sources */,
|
||||
0306DBAF1D85D62E007AE314 /* Supporting Files */,
|
||||
0306DB981D85D626007AE314 /* Demo */,
|
||||
03A75E2C1BCF2066002E46C4 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
@@ -95,47 +107,12 @@
|
||||
03A75E2C1BCF2066002E46C4 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03A75E2B1BCF2066002E46C4 /* JLToast.framework */,
|
||||
03A75E351BCF2066002E46C4 /* JLToastTests.xctest */,
|
||||
03A75E4F1BCF20D4002E46C4 /* JLToastDemo.app */,
|
||||
03A75E2B1BCF2066002E46C4 /* Toaster.framework */,
|
||||
03A75E4F1BCF20D4002E46C4 /* ToasterDemo.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03A75E2D1BCF2066002E46C4 /* JLToast */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03A75E2E1BCF2066002E46C4 /* JLToast.h */,
|
||||
03A75E451BCF2098002E46C4 /* JLToast.swift */,
|
||||
03A75E461BCF2098002E46C4 /* JLToastCenter.swift */,
|
||||
03A75E471BCF2098002E46C4 /* JLToastView.swift */,
|
||||
037A2EA81C043C9600257E51 /* JLToastWindow.swift */,
|
||||
03A75E301BCF2066002E46C4 /* Info.plist */,
|
||||
);
|
||||
path = JLToast;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03A75E391BCF2066002E46C4 /* JLToastTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03A75E3A1BCF2066002E46C4 /* JLToastTests.swift */,
|
||||
03A75E3C1BCF2066002E46C4 /* Info.plist */,
|
||||
);
|
||||
path = JLToastTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
03A75E501BCF20D4002E46C4 /* JLToastDemo */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
03A75E511BCF20D4002E46C4 /* AppDelegate.swift */,
|
||||
03A75E611BCF2102002E46C4 /* RootViewController.swift */,
|
||||
03A75E581BCF20D4002E46C4 /* Assets.xcassets */,
|
||||
03A75E5A1BCF20D4002E46C4 /* LaunchScreen.storyboard */,
|
||||
03A75E5D1BCF20D4002E46C4 /* Info.plist */,
|
||||
);
|
||||
path = JLToastDemo;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
@@ -143,16 +120,16 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03A75E2F1BCF2066002E46C4 /* JLToast.h in Headers */,
|
||||
0306DBAA1D85D62A007AE314 /* Toaster.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
03A75E2A1BCF2066002E46C4 /* JLToast */ = {
|
||||
03A75E2A1BCF2066002E46C4 /* Toaster */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 03A75E3F1BCF2066002E46C4 /* Build configuration list for PBXNativeTarget "JLToast" */;
|
||||
buildConfigurationList = 03A75E3F1BCF2066002E46C4 /* Build configuration list for PBXNativeTarget "Toaster" */;
|
||||
buildPhases = (
|
||||
03A75E261BCF2066002E46C4 /* Sources */,
|
||||
03A75E271BCF2066002E46C4 /* Frameworks */,
|
||||
@@ -163,32 +140,14 @@
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = JLToast;
|
||||
productName = JLToast;
|
||||
productReference = 03A75E2B1BCF2066002E46C4 /* JLToast.framework */;
|
||||
name = Toaster;
|
||||
productName = Toaster;
|
||||
productReference = 03A75E2B1BCF2066002E46C4 /* Toaster.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
03A75E341BCF2066002E46C4 /* JLToastTests */ = {
|
||||
03A75E4E1BCF20D4002E46C4 /* ToasterDemo */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 03A75E421BCF2066002E46C4 /* Build configuration list for PBXNativeTarget "JLToastTests" */;
|
||||
buildPhases = (
|
||||
03A75E311BCF2066002E46C4 /* Sources */,
|
||||
03A75E321BCF2066002E46C4 /* Frameworks */,
|
||||
03A75E331BCF2066002E46C4 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
03A75E381BCF2066002E46C4 /* PBXTargetDependency */,
|
||||
);
|
||||
name = JLToastTests;
|
||||
productName = JLToastTests;
|
||||
productReference = 03A75E351BCF2066002E46C4 /* JLToastTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
03A75E4E1BCF20D4002E46C4 /* JLToastDemo */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 03A75E5E1BCF20D4002E46C4 /* Build configuration list for PBXNativeTarget "JLToastDemo" */;
|
||||
buildConfigurationList = 03A75E5E1BCF20D4002E46C4 /* Build configuration list for PBXNativeTarget "ToasterDemo" */;
|
||||
buildPhases = (
|
||||
03A75E4B1BCF20D4002E46C4 /* Sources */,
|
||||
03A75E4C1BCF20D4002E46C4 /* Frameworks */,
|
||||
@@ -199,9 +158,9 @@
|
||||
dependencies = (
|
||||
03A75E641BCF216A002E46C4 /* PBXTargetDependency */,
|
||||
);
|
||||
name = JLToastDemo;
|
||||
productName = JLToastDemo;
|
||||
productReference = 03A75E4F1BCF20D4002E46C4 /* JLToastDemo.app */;
|
||||
name = ToasterDemo;
|
||||
productName = ToasterDemo;
|
||||
productReference = 03A75E4F1BCF20D4002E46C4 /* ToasterDemo.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
@@ -218,17 +177,13 @@
|
||||
CreatedOnToolsVersion = 7.0.1;
|
||||
LastSwiftMigration = 0800;
|
||||
};
|
||||
03A75E341BCF2066002E46C4 = {
|
||||
CreatedOnToolsVersion = 7.0.1;
|
||||
LastSwiftMigration = 0800;
|
||||
};
|
||||
03A75E4E1BCF20D4002E46C4 = {
|
||||
CreatedOnToolsVersion = 7.0.1;
|
||||
LastSwiftMigration = 0800;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 03A75E251BCF2066002E46C4 /* Build configuration list for PBXProject "JLToast" */;
|
||||
buildConfigurationList = 03A75E251BCF2066002E46C4 /* Build configuration list for PBXProject "Toaster" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
@@ -241,9 +196,8 @@
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
03A75E2A1BCF2066002E46C4 /* JLToast */,
|
||||
03A75E341BCF2066002E46C4 /* JLToastTests */,
|
||||
03A75E4E1BCF20D4002E46C4 /* JLToastDemo */,
|
||||
03A75E2A1BCF2066002E46C4 /* Toaster */,
|
||||
03A75E4E1BCF20D4002E46C4 /* ToasterDemo */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
@@ -253,13 +207,8 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
03A75E331BCF2066002E46C4 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
0306DBA01D85D626007AE314 /* Assets.xcassets in Resources */,
|
||||
0306DBA11D85D626007AE314 /* LaunchScreen.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -267,8 +216,6 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03A75E5C1BCF20D4002E46C4 /* LaunchScreen.storyboard in Resources */,
|
||||
03A75E591BCF20D4002E46C4 /* Assets.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -279,18 +226,10 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03A75E491BCF2098002E46C4 /* JLToastCenter.swift in Sources */,
|
||||
03A75E4A1BCF2098002E46C4 /* JLToastView.swift in Sources */,
|
||||
03A75E481BCF2098002E46C4 /* JLToast.swift in Sources */,
|
||||
037A2EA91C043C9600257E51 /* JLToastWindow.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
03A75E311BCF2066002E46C4 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03A75E3B1BCF2066002E46C4 /* JLToastTests.swift in Sources */,
|
||||
0306DBAC1D85D62A007AE314 /* ToastCenter.swift in Sources */,
|
||||
0306DBAE1D85D62A007AE314 /* ToastWindow.swift in Sources */,
|
||||
0306DBAB1D85D62A007AE314 /* Toast.swift in Sources */,
|
||||
0306DBAD1D85D62A007AE314 /* ToastView.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -298,31 +237,26 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
03A75E521BCF20D4002E46C4 /* AppDelegate.swift in Sources */,
|
||||
03A75E621BCF2102002E46C4 /* RootViewController.swift in Sources */,
|
||||
0397CD2D1D85D6920077D82F /* AppDelegate.swift in Sources */,
|
||||
0397CD2E1D85D6930077D82F /* RootViewController.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
03A75E381BCF2066002E46C4 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 03A75E2A1BCF2066002E46C4 /* JLToast */;
|
||||
targetProxy = 03A75E371BCF2066002E46C4 /* PBXContainerItemProxy */;
|
||||
};
|
||||
03A75E641BCF216A002E46C4 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 03A75E2A1BCF2066002E46C4 /* JLToast */;
|
||||
target = 03A75E2A1BCF2066002E46C4 /* Toaster */;
|
||||
targetProxy = 03A75E631BCF216A002E46C4 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
03A75E5A1BCF20D4002E46C4 /* LaunchScreen.storyboard */ = {
|
||||
0306DB9B1D85D626007AE314 /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
03A75E5B1BCF20D4002E46C4 /* Base */,
|
||||
0306DB9C1D85D626007AE314 /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
@@ -427,11 +361,11 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = JLToast/Info.plist;
|
||||
INFOPLIST_FILE = "Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.xoul.JLToast;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.xoul.Toaster;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
@@ -447,11 +381,11 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = JLToast/Info.plist;
|
||||
INFOPLIST_FILE = "Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.xoul.JLToast;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.xoul.Toaster;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
@@ -459,37 +393,14 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
03A75E431BCF2066002E46C4 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
INFOPLIST_FILE = JLToastTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.xoul.JLToastTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
03A75E441BCF2066002E46C4 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
INFOPLIST_FILE = JLToastTests/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.xoul.JLToastTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
03A75E5F1BCF20D4002E46C4 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = JLToastDemo/Info.plist;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Demo/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.xoul.JLToastDemo;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.xoul.ToasterDemo;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 3.0;
|
||||
};
|
||||
@@ -499,10 +410,10 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
INFOPLIST_FILE = JLToastDemo/Info.plist;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/Demo/Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.xoul.JLToastDemo;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.xoul.ToasterDemo;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
SWIFT_VERSION = 3.0;
|
||||
@@ -512,7 +423,7 @@
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
03A75E251BCF2066002E46C4 /* Build configuration list for PBXProject "JLToast" */ = {
|
||||
03A75E251BCF2066002E46C4 /* Build configuration list for PBXProject "Toaster" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
03A75E3D1BCF2066002E46C4 /* Debug */,
|
||||
@@ -521,7 +432,7 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
03A75E3F1BCF2066002E46C4 /* Build configuration list for PBXNativeTarget "JLToast" */ = {
|
||||
03A75E3F1BCF2066002E46C4 /* Build configuration list for PBXNativeTarget "Toaster" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
03A75E401BCF2066002E46C4 /* Debug */,
|
||||
@@ -530,16 +441,7 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
03A75E421BCF2066002E46C4 /* Build configuration list for PBXNativeTarget "JLToastTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
03A75E431BCF2066002E46C4 /* Debug */,
|
||||
03A75E441BCF2066002E46C4 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
03A75E5E1BCF20D4002E46C4 /* Build configuration list for PBXNativeTarget "JLToastDemo" */ = {
|
||||
03A75E5E1BCF20D4002E46C4 /* Build configuration list for PBXNativeTarget "ToasterDemo" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
03A75E5F1BCF20D4002E46C4 /* Debug */,
|
||||
@@ -2,6 +2,6 @@
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:JLToast.xcodeproj">
|
||||
location = "self:/Users/xoul/workspace/JLToast/Toaster.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -15,9 +15,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "03A75E2A1BCF2066002E46C4"
|
||||
BuildableName = "JLToast.framework"
|
||||
BlueprintName = "JLToast"
|
||||
ReferencedContainer = "container:JLToast.xcodeproj">
|
||||
BuildableName = "Toaster.framework"
|
||||
BlueprintName = "Toaster"
|
||||
ReferencedContainer = "container:Toaster.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
@@ -28,26 +28,7 @@
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "03A75E341BCF2066002E46C4"
|
||||
BuildableName = "JLToastTests.xctest"
|
||||
BlueprintName = "JLToastTests"
|
||||
ReferencedContainer = "container:JLToast.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "03A75E2A1BCF2066002E46C4"
|
||||
BuildableName = "JLToast.framework"
|
||||
BlueprintName = "JLToast"
|
||||
ReferencedContainer = "container:JLToast.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
@@ -65,9 +46,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "03A75E2A1BCF2066002E46C4"
|
||||
BuildableName = "JLToast.framework"
|
||||
BlueprintName = "JLToast"
|
||||
ReferencedContainer = "container:JLToast.xcodeproj">
|
||||
BuildableName = "Toaster.framework"
|
||||
BlueprintName = "Toaster"
|
||||
ReferencedContainer = "container:Toaster.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
@@ -83,9 +64,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "03A75E2A1BCF2066002E46C4"
|
||||
BuildableName = "JLToast.framework"
|
||||
BlueprintName = "JLToast"
|
||||
ReferencedContainer = "container:JLToast.xcodeproj">
|
||||
BuildableName = "Toaster.framework"
|
||||
BlueprintName = "Toaster"
|
||||
ReferencedContainer = "container:Toaster.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
Reference in New Issue
Block a user