Skip to content

Commit

Permalink
Fix bug with bottom comment size
Browse files Browse the repository at this point in the history
Fix bug for size bottom comment. Added `isADenied` func. Rename func `isAllow` to `isAllowed`. Update example code. Update pod version to 3.0.
  • Loading branch information
ivanvorobei committed Feb 7, 2019
1 parent 90172ee commit cde72d0
Show file tree
Hide file tree
Showing 134 changed files with 1,301 additions and 2,789 deletions.
1,412 changes: 692 additions & 720 deletions Example/request-permission.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,11 @@ public class SPPermissionDialogController: UIViewController {

if let permission = permission {
SPPermission.request(permission, with: {
if SPPermission.isAllow(permission) {
if SPPermission.isAllowed(permission) {
self.delegate?.didAllow?(permission: permission)
permissionView?.updateStyle()
for permission in self.permissions {
if SPPermission.isAllow(permission) {
if SPPermission.isAllowed(permission) {
if self.permissions.last == permission {
SPPermissionStyle.Delay.wait(0.2, closure: {
self.hide(withDialog: true)
Expand Down Expand Up @@ -305,18 +305,15 @@ public class SPPermissionDialogController: UIViewController {
self.areaView.frame = CGRect.init(origin: self.areaView.frame.origin, size: CGSize.init(width: self.areaView.frame.width, height: self.areaView.layoutHeight))
self.areaView.center = self.areaCenter

var bottomLabelWidth: CGFloat = size.width * 0.4
var bottomLabelWidth: CGFloat = size.width * 0.6
if bottomLabelWidth > 230 {
bottomLabelWidth = 230
}

self.bottomLabel.frame = CGRect.init(origin: self.bottomLabel.frame.origin, size: CGSize.init(width: bottomLabelWidth, height: 10))
self.bottomLabel.sizeToFit()
self.bottomLabel.frame = CGRect.init(origin: self.bottomLabel.frame.origin, size: CGSize.init(width: bottomLabelWidth, height: self.bottomLabel.frame.height))
self.bottomLabel.center.x = size.width / 2
if #available(iOS 11.0, *) {
self.bottomLabel.frame.origin.y = size.height - self.view.safeAreaInsets.bottom - 30 - self.bottomLabel.frame.height
} else {
self.bottomLabel.frame.origin.y = size.height - 30 - self.bottomLabel.frame.height
}
self.bottomLabel.frame.origin.y = size.height - 40 - self.bottomLabel.frame.height
SPPermissionStyle.Shadow.setShadowOffsetForLabel(self.bottomLabel, blurRadius: 3, widthOffset: 0, heightOffset: 0, opacity: 0.18)

let bottomLabelAlpha: CGFloat = SPPermissionStyle.Orientation.isPortrait ? 1 : 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ class SPPermissionDialogLineView: UIView {
}

func updateStyle() {
if SPPermission.isAllow(self.permission) {
if SPPermission.isAllowed(self.permission) {
SPPermissionStyle.Animation.base(0.2, animations: {
self.button.setTitle(self.allowedTitle, for: .normal)
self.button.style = .select
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class SPPermissionAlwaysAuthorizationLocationHandler: NSObject, CLLocationManage
return CLLocationManager()
}()

var complectionHandler: SPPermissionAuthorizationHandlerCompletionBlock?
var completionHandler: SPPermissionAuthorizationHandlerCompletionBlock?

override init() {
super.init()
Expand All @@ -48,15 +48,15 @@ class SPPermissionAlwaysAuthorizationLocationHandler: NSObject, CLLocationManage
return
}

if let complectionHandler = complectionHandler {
complectionHandler(self.isAuthorized)
if let completionHandler = completionHandler {
completionHandler(self.isAuthorized)
}
}

private var whenInUseNotRealChangeStatus: Bool = false

func requestPermission(_ complectionHandler: @escaping SPPermissionAuthorizationHandlerCompletionBlock) {
self.complectionHandler = complectionHandler
func requestPermission(_ completionHandler: @escaping SPPermissionAuthorizationHandlerCompletionBlock) {
self.completionHandler = completionHandler

let status = CLLocationManager.authorizationStatus()

Expand All @@ -71,7 +71,7 @@ class SPPermissionAlwaysAuthorizationLocationHandler: NSObject, CLLocationManage
locationManager.requestAlwaysAuthorization()
break
default:
complectionHandler(self.isAuthorized)
completionHandler(self.isAuthorized)
}
}

Expand All @@ -96,7 +96,7 @@ class SPPermissionWhenInUseAuthorizationLocationHandler: NSObject, CLLocationMan
return CLLocationManager()
}()

var complectionHandler: SPPermissionAuthorizationHandlerCompletionBlock?
var completionHandler: SPPermissionAuthorizationHandlerCompletionBlock?

override init() {
super.init()
Expand All @@ -107,20 +107,20 @@ class SPPermissionWhenInUseAuthorizationLocationHandler: NSObject, CLLocationMan
return
}

if let complectionHandler = complectionHandler {
complectionHandler(self.isAuthorized)
if let completionHandler = completionHandler {
completionHandler(self.isAuthorized)
}
}

func requestPermission(_ complectionHandler: @escaping SPPermissionAuthorizationHandlerCompletionBlock) {
self.complectionHandler = complectionHandler
func requestPermission(_ completionHandler: @escaping SPPermissionAuthorizationHandlerCompletionBlock) {
self.completionHandler = completionHandler

let status = CLLocationManager.authorizationStatus()
if (status == .notDetermined) || (status == .authorizedAlways) {
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
} else {
complectionHandler(self.isAuthorized)
completionHandler(self.isAuthorized)
}
}

Expand Down
144 changes: 83 additions & 61 deletions Example/request-permission/Frameworks/SPPermission/SPPermission.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,16 @@ import CoreMotion

public struct SPPermission {

public static func isAllow(_ permission: SPPermissionType) -> Bool {
public static func isAllowed(_ permission: SPPermissionType) -> Bool {
let manager = self.getManagerForPermission(permission)
return manager.isAuthorized
}

public static func isDenied(_ permission: SPPermissionType) -> Bool {
let manager = self.getManagerForPermission(permission)
return manager.isDenied
}

public static func request(_ permission: SPPermissionType, with complectionHandler: @escaping ()->()) {
let manager = self.getManagerForPermission(permission)
if let usageDescriptionKey = permission.usageDescriptionKey {
Expand All @@ -58,6 +63,8 @@ fileprivate protocol SPPermissionInterface {

var isAuthorized: Bool { get }

var isDenied: Bool { get }

func request(withComlectionHandler complectionHandler: @escaping ()->()?)
}

Expand Down Expand Up @@ -98,11 +105,11 @@ extension SPPermission {
fileprivate struct SPCameraPermission: SPPermissionInterface {

var isAuthorized: Bool {
if AVCaptureDevice.authorizationStatus(for: AVMediaType.video) == AVAuthorizationStatus.authorized {
return true
} else {
return false
}
return AVCaptureDevice.authorizationStatus(for: AVMediaType.video) == AVAuthorizationStatus.authorized
}

var isDenied: Bool {
return AVCaptureDevice.authorizationStatus(for: AVMediaType.video) == AVAuthorizationStatus.denied
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
Expand All @@ -118,19 +125,28 @@ extension SPPermission {
fileprivate struct SPNotificationPermission: SPPermissionInterface {

var isAuthorized: Bool {
guard let authorizationStatus = fetchAuthorizationStatus() else { return false }
return authorizationStatus == .authorized
}

var isDenied: Bool {
guard let authorizationStatus = fetchAuthorizationStatus() else { return false }
return authorizationStatus == .denied
}

private func fetchAuthorizationStatus() -> UNAuthorizationStatus? {
var notificationSettings: UNNotificationSettings?
let semasphore = DispatchSemaphore(value: 0)
let semaphore = DispatchSemaphore(value: 0)

DispatchQueue.global().async {
UNUserNotificationCenter.current().getNotificationSettings { setttings in
notificationSettings = setttings
semasphore.signal()
semaphore.signal()
}
}

semasphore.wait()
guard let authorizationStatus = notificationSettings?.authorizationStatus else { return false }
return authorizationStatus == .authorized
semaphore.wait()
return notificationSettings?.authorizationStatus
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
Expand All @@ -153,13 +169,13 @@ extension SPPermission {
}

fileprivate struct SPPhotoLibraryPermission: SPPermissionInterface {

var isAuthorized: Bool {
if PHPhotoLibrary.authorizationStatus() == PHAuthorizationStatus.authorized {
return true
} else {
return false
}
return PHPhotoLibrary.authorizationStatus() == PHAuthorizationStatus.authorized
}

var isDenied: Bool {
return PHPhotoLibrary.authorizationStatus() == PHAuthorizationStatus.denied
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
Expand All @@ -175,10 +191,11 @@ extension SPPermission {
fileprivate struct SPMicrophonePermission: SPPermissionInterface {

var isAuthorized: Bool {
if AVAudioSession.sharedInstance().recordPermission == .granted {
return true
}
return false
return AVAudioSession.sharedInstance().recordPermission == .granted
}

var isDenied: Bool {
return AVAudioSession.sharedInstance().recordPermission == .denied
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
Expand All @@ -195,13 +212,11 @@ extension SPPermission {
fileprivate struct SPCalendarPermission: SPPermissionInterface {

var isAuthorized: Bool {
let status = EKEventStore.authorizationStatus(for: EKEntityType.event)
switch (status) {
case EKAuthorizationStatus.authorized:
return true
default:
return false
}
return EKEventStore.authorizationStatus(for: EKEntityType.event) == .authorized
}

var isDenied: Bool {
return EKEventStore.authorizationStatus(for: EKEntityType.event) == .denied
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
Expand All @@ -219,21 +234,18 @@ extension SPPermission {

var isAuthorized: Bool {
if #available(iOS 9.0, *) {
let status = CNContactStore.authorizationStatus(for: .contacts)
if status == .authorized {
return true
} else {
return false
}
return CNContactStore.authorizationStatus(for: .contacts) == .authorized
} else {
let status = ABAddressBookGetAuthorizationStatus()
if status == .authorized {
return true
} else {
return false
}
return ABAddressBookGetAuthorizationStatus() == .authorized
}
}

var isDenied: Bool {
if #available(iOS 9.0, *) {
return CNContactStore.authorizationStatus(for: .contacts) == .denied
} else {
return ABAddressBookGetAuthorizationStatus() == .denied
}

}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
Expand All @@ -259,13 +271,11 @@ extension SPPermission {
fileprivate struct SPRemindersPermission: SPPermissionInterface {

var isAuthorized: Bool {
let status = EKEventStore.authorizationStatus(for: EKEntityType.reminder)
switch (status) {
case EKAuthorizationStatus.authorized:
return true
default:
return false
}
return EKEventStore.authorizationStatus(for: EKEntityType.reminder) == .authorized
}

var isDenied: Bool {
return EKEventStore.authorizationStatus(for: EKEntityType.reminder) == .denied
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
Expand All @@ -282,13 +292,11 @@ extension SPPermission {
fileprivate struct SPBluetoothPermission: SPPermissionInterface {

var isAuthorized: Bool {
let status = EKEventStore.authorizationStatus(for: EKEntityType.reminder)
switch (status) {
case EKAuthorizationStatus.authorized:
return true
default:
return false
}
return EKEventStore.authorizationStatus(for: EKEntityType.reminder) == .authorized
}

var isDenied: Bool {
return EKEventStore.authorizationStatus(for: EKEntityType.reminder) == .denied
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
Expand All @@ -308,6 +316,10 @@ extension SPPermission {
return SFSpeechRecognizer.authorizationStatus() == .authorized
}

var isDenied: Bool {
return SFSpeechRecognizer.authorizationStatus() == .denied
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
SFSpeechRecognizer.requestAuthorization { status in
DispatchQueue.main.async {
Expand All @@ -320,12 +332,11 @@ extension SPPermission {
fileprivate struct SPMediaLibraryPermission: SPPermissionInterface {

var isAuthorized: Bool {
let status = MPMediaLibrary.authorizationStatus()
if status == .authorized {
return true
} else {
return false
}
return MPMediaLibrary.authorizationStatus() == .authorized
}

var isDenied: Bool {
return MPMediaLibrary.authorizationStatus() == .denied
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
Expand Down Expand Up @@ -374,6 +385,10 @@ extension SPPermission {
}
}

var isDenied: Bool {
return CLLocationManager.authorizationStatus() == .denied
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {

switch self.type {
Expand Down Expand Up @@ -414,6 +429,13 @@ extension SPPermission {
return false
}

var isDenied: Bool {
if #available(iOS 11.0, *) {
return CMMotionActivityManager.authorizationStatus() == .denied
}
return false
}

func request(withComlectionHandler complectionHandler: @escaping ()->()?) {
let manager = CMMotionActivityManager()
let today = Date()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import UIKit

public class SPAnimation {

static func animate(_ duration: TimeInterval,
public static func animate(_ duration: TimeInterval,
animations: (() -> Void)!,
delay: TimeInterval = 0,
options: UIView.AnimationOptions = [],
Expand All @@ -40,7 +40,7 @@ public class SPAnimation {
})
}

static func animateWithRepeatition(_ duration: TimeInterval,
public static func animateWithRepeatition(_ duration: TimeInterval,
animations: (() -> Void)!,
delay: TimeInterval = 0,
options: UIView.AnimationOptions = [],
Expand Down

0 comments on commit cde72d0

Please sign in to comment.