feat: Add blurred close button

This commit is contained in:
Andrea Busi
2021-03-07 17:11:40 +01:00
parent 8465350a67
commit 05a187b7ec
2 changed files with 73 additions and 0 deletions
@@ -9,6 +9,7 @@
/* Begin PBXBuildFile section */
6525A82625E13FD4008FE0D0 /* SeismicNetworkAdvertiseTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6525A82525E13FD4008FE0D0 /* SeismicNetworkAdvertiseTableViewCell.swift */; };
6544416B25E9599000C41714 /* EQNDebugViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6544416A25E9599000C41714 /* EQNDebugViewController.swift */; };
6586971125F44C26009C0182 /* EQNBlurredCloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6586971025F44C26009C0182 /* EQNBlurredCloseButton.swift */; };
65DBFB4B25E29DD60041CBA6 /* SeismicNetworksMapDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DBFB4A25E29DD60041CBA6 /* SeismicNetworksMapDetailViewController.swift */; };
65DBFB5F25E2A5010041CBA6 /* EQNMapAnnotationPastquakes.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C602249218EDBE200C799C2 /* EQNMapAnnotationPastquakes.m */; };
65DBFB7425E2BBF20041CBA6 /* GADTMediumTemplateView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65DBFB6F25E2BBF20041CBA6 /* GADTMediumTemplateView.xib */; };
@@ -274,6 +275,7 @@
40CD2E5581CF2FA3D52F392D /* Pods-Earthquake Network.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Earthquake Network.release.xcconfig"; path = "Pods/Target Support Files/Pods-Earthquake Network/Pods-Earthquake Network.release.xcconfig"; sourceTree = "<group>"; };
6525A82525E13FD4008FE0D0 /* SeismicNetworkAdvertiseTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeismicNetworkAdvertiseTableViewCell.swift; sourceTree = "<group>"; };
6544416A25E9599000C41714 /* EQNDebugViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EQNDebugViewController.swift; sourceTree = "<group>"; };
6586971025F44C26009C0182 /* EQNBlurredCloseButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EQNBlurredCloseButton.swift; sourceTree = "<group>"; };
65DBFB4A25E29DD60041CBA6 /* SeismicNetworksMapDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeismicNetworksMapDetailViewController.swift; sourceTree = "<group>"; };
65DBFB6F25E2BBF20041CBA6 /* GADTMediumTemplateView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GADTMediumTemplateView.xib; sourceTree = "<group>"; };
65DBFB7025E2BBF20041CBA6 /* GADTTemplateView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADTTemplateView.h; sourceTree = "<group>"; };
@@ -1099,6 +1101,7 @@
DC52B8A424FCCD6900ABEBA6 /* AppTheme.swift */,
DCA5B6E6252E4BD8002AEC96 /* EQNBaseTableViewCell.swift */,
DCBB267B24D1E98300F04559 /* EQNInsetTableViewCell.swift */,
6586971025F44C26009C0182 /* EQNBlurredCloseButton.swift */,
);
path = UI;
sourceTree = "<group>";
@@ -1575,6 +1578,7 @@
DC646F32252B698B000AA5FD /* AlertsSeismicNotificationCompactTableViewCell.swift in Sources */,
DCF10DCD24D2C935009F34C3 /* EQNPurchaseAvailability.swift in Sources */,
DC08803F24F5A89000186D97 /* SettingEnableTableViewCell.swift in Sources */,
6586971125F44C26009C0182 /* EQNBlurredCloseButton.swift in Sources */,
8CAFD7C521825E4A00F8BD29 /* EQNSisma.m in Sources */,
DCC23DEC24D281CE003A2404 /* SubscriptionsActiveTableViewCell.swift in Sources */,
8CF6604F214C0E58009F4314 /* EQNCalibrazione.m in Sources */,
@@ -0,0 +1,69 @@
//
// EQNBlurredCloseButton.swift
// Earthquake Network
//
// Created by Andrea Busi on 07/03/21.
// Copyright © 2021 Earthquake Network. All rights reserved.
//
import Foundation
class EQNBlurredCloseButton: UIButton {
// MARK: - Init
convenience init() {
self.init(type: .custom)
setupUI()
}
// MARK: - Private
private func setupUI() {
layer.masksToBounds = true
titleLabel?.font = UIFont.monospacedDigitSystemFont(ofSize: 16.0, weight: .medium)
setTitle("X", for: .normal)
addBlurEffect(style: .extraLight)
}
private func addBlurEffect(style: UIBlurEffect.Style = .regular) {
backgroundColor = .clear
let blurView = UIVisualEffectView(effect: UIBlurEffect(style: style))
blurView.isUserInteractionEnabled = false
blurView.backgroundColor = UIColor.lightGray.withAlphaComponent(0.6)
insertSubview(blurView, at: 0)
blurView.translatesAutoresizingMaskIntoConstraints = false
leadingAnchor.constraint(equalTo: blurView.leadingAnchor).isActive = true
trailingAnchor.constraint(equalTo: blurView.trailingAnchor).isActive = true
topAnchor.constraint(equalTo: blurView.topAnchor).isActive = true
bottomAnchor.constraint(equalTo: blurView.bottomAnchor).isActive = true
if let imageView = self.imageView {
imageView.backgroundColor = .clear
bringSubviewToFront(imageView)
}
}
override func layoutSubviews() {
super.layoutSubviews()
// force the button to be circle
layer.cornerRadius = frame.height / 2.0
}
// MARK: - Public
/// Add constaints to show the button on the upper right corner
func addDefaultConstraint(to view: UIView) {
leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10.0).isActive = true
topAnchor.constraint(equalTo: view.topAnchor, constant: 10.0).isActive = true
widthAnchor.constraint(equalTo: heightAnchor).isActive = true
heightAnchor.constraint(equalToConstant: 40.0).isActive = true
}
}