Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dani-gavrilov/GDPerformanceView-Swift

Shows FPS, CPU and memory usage, device model, app and iOS versions above the status bar and report FPS, CPU and memory usage via delegate.
https://github.com/dani-gavrilov/GDPerformanceView-Swift

Last synced: 3 months ago
JSON representation

Shows FPS, CPU and memory usage, device model, app and iOS versions above the status bar and report FPS, CPU and memory usage via delegate.

Awesome Lists containing this project

README

        

# GDPerformanceView-Swift
Shows FPS, CPU and memory usage, device model, app and iOS versions above the status bar and report FPS, CPU and memory usage via delegate.

[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg)](https://github.com/Carthage/Carthage)
[![Pod Version](https://img.shields.io/badge/Pod-2.1.1-6193DF.svg)](https://cocoapods.org/)
![Swift Version](https://img.shields.io/badge/xCode-12.0+-blue.svg)
![Swift Version](https://img.shields.io/badge/iOS-9.0+-blue.svg)
![Swift Version](https://img.shields.io/badge/Swift-5.0+-orange.svg)
![Plaform](https://img.shields.io/badge/Platform-iOS-lightgrey.svg)
![License MIT](https://img.shields.io/badge/License-MIT-lightgrey.svg)

![Alt text](https://github.com/dani-gavrilov/GDPerformanceView-Swift/blob/master/performance_view.PNG?raw=true "Example PNG")
![Alt text](https://github.com/dani-gavrilov/GDPerformanceView-Swift/blob/master/performance_view_2.PNG?raw=true "Example PNG")
![Alt text](https://github.com/dani-gavrilov/GDPerformanceView-Swift/blob/master/performance_view_3.PNG?raw=true "Example PNG")
![Alt text](https://github.com/dani-gavrilov/GDPerformanceView-Swift/blob/master/performance_view_4.PNG?raw=true "Example PNG")

## Installation
Simply add GDPerformanceMonitoring folder with files to your project, or use CocoaPods.

#### Carthage
Create a `Cartfile` that lists the framework and run `carthage update`. Follow the [instructions](https://github.com/Carthage/Carthage#if-youre-building-for-ios) to add `$(SRCROOT)/Carthage/Build/iOS/GDPerformanceView.framework` to an iOS project.

```ruby
github "dani-gavrilov/GDPerformanceView-Swift" ~> 2.1.1
```
Don't forget to import GDPerformanceView by adding:

```swift
import GDPerformanceView
```

#### CocoaPods
You can use [CocoaPods](http://cocoapods.org/) to install `GDPerformanceView` by adding it to your `Podfile`:

```ruby
platform :ios, '8.0'
use_frameworks!

target 'project_name' do
pod 'GDPerformanceView-Swift', '~> 2.1.1'
end
```
Don't forget to import GDPerformanceView by adding:

```swift
import GDPerformanceView_Swift
```

## Usage example

Simply start monitoring. Performance view will be added above the status bar automatically.
Also, you can configure appearance as you like or just hide the monitoring view and use its delegate.

You can find example projects [here](https://github.com/dani-gavrilov/GDPerformanceViewExamples).

#### Start monitoring

By default, monitoring is paused. Call the following command to start or resume monitoring:

```swift
PerformanceMonitor.shared().start()
```
or

```swift
self.performanceView = PerformanceMonitor()
self.performanceView?. start()
```
This won't show the monitoring view if it was hidden previously. To show it call the following command:

```swift
self.performanceView?.show()
```

#### Pause monitoring

Call the following command to pause monitoring:

```swift
self.performanceView?.pause()
```

This won't hide the monitoring view. To hide it call the following command:

```swift
self.performanceView?.hide()
```

#### Displayed information

You can change displayed information by changing options of the performance monitor:

```swift
self.performanceView?.performanceViewConfigurator.options = .all
```
You can choose from:

* performance - CPU usage and FPS.
* memory - Memory usage.
* application - Application version with build number.
* device - Device model.
* system - System name with version.

Also you can mix them, but order doesn't matter:

```swift
self.performanceView?.performanceViewConfigurator.options = [.performance, .application, .system]
```
By default, set of [.performance, .application, .system] options is used.

You can also add your custom information by using:

```swift
self.performanceView?.performanceViewConfigurator.userInfo = .custom(string: "Launch date \(Date())")
```
Keep in mind that custom string will not automatically fit the screen, use `\n` if it is too long.

#### Appearance

You can change monitoring view appearance by changing style of the performance monitor:

Call the following command to change output information:

```swift
self.performanceView?.performanceViewConfigurator.style = .dark
```

You can choose from:

* dark - Black background, white text.
* light - White background, black text.
* custom - You can set background color, border color, border width, corner radius, text color and font.

By default, dark style is used.

Also you can override prefersStatusBarHidden and preferredStatusBarStyle to match your expectations:

```swift
self.performanceView?.statusBarConfigurator.statusBarHidden = false
self.performanceView?.statusBarConfigurator.statusBarStyle = .lightContent
```

#### Interactions

You can interact with performance view via gesture recognizers. Add them by using:

```swift
self.performanceView?.performanceViewConfigurator.interactors = [tapGesture, swipeGesture]
```
If interactors is nil or empty `point(inside:with:)` of the view will return false to make all touches pass underneath. So to remove interactors just call the following command:

```swift
self.performanceView?.performanceViewConfigurator.interactors = nil
```
By default, interactors are nil.

#### Delegate

Set the delegate and implement its method:

```swift
self.performanceView?.delegate = self
```

```swift
func performanceMonitor(didReport performanceReport: PerformanceReport) {
print(performanceReport.cpuUsage, performanceReport.fps, performanceReport.memoryUsage.used, performanceReport.memoryUsage.total)
}
```

## Requirements
- iOS 9.0+
- xCode 12.0+

## Donations

Wanna say thanks? You can do it using [Patreon](https://www.patreon.com/dani_gavrilov).

## Meta

Daniil Gavrilov - [VK](https://vk.com/dani_gavrilov) - [FB](https://facebook.com/danigavrilov)

I will be pleased to know that your project uses this framework. You can send a link to your project in App Store to my email - [[email protected]](mailto:[email protected]).

## License

GDPerformanceView is available under the MIT license. See the LICENSE file for more info.