Created
November 2, 2015 03:41
-
-
Save ibireme/8398714c741fc2097604 to your computer and use it in GitHub Desktop.
iOS FPS Label
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <UIKit/UIKit.h> | |
/** | |
Show Screen FPS... | |
The maximum fps in OSX/iOS Simulator is 60.00. | |
The maximum fps on iPhone is 59.97. | |
The maxmium fps on iPad is 60.0. | |
*/ | |
@interface YYFPSLabel : UILabel | |
@end | |
#import "YYFPSLabel.h" | |
#import <YYKit/YYKit.h> | |
#define kSize CGSizeMake(55, 20) | |
@implementation YYFPSLabel { | |
CADisplayLink *_link; | |
NSUInteger _count; | |
NSTimeInterval _lastTime; | |
UIFont *_font; | |
UIFont *_subFont; | |
NSTimeInterval _llll; | |
} | |
- (instancetype)initWithFrame:(CGRect)frame { | |
if (frame.size.width == 0 && frame.size.height == 0) { | |
frame.size = kSize; | |
} | |
self = [super initWithFrame:frame]; | |
self.layer.cornerRadius = 5; | |
self.clipsToBounds = YES; | |
self.textAlignment = NSTextAlignmentCenter; | |
self.userInteractionEnabled = NO; | |
self.backgroundColor = [UIColor colorWithWhite:0.000 alpha:0.700]; | |
_font = [UIFont fontWithName:@"Menlo" size:14]; | |
if (_font) { | |
_subFont = [UIFont fontWithName:@"Menlo" size:4]; | |
} else { | |
_font = [UIFont fontWithName:@"Courier" size:14]; | |
_subFont = [UIFont fontWithName:@"Courier" size:4]; | |
} | |
_link = [CADisplayLink displayLinkWithTarget:[YYWeakProxy proxyWithTarget:self] selector:@selector(tick:)]; | |
[_link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; | |
return self; | |
} | |
- (void)dealloc { | |
[_link invalidate]; | |
} | |
- (CGSize)sizeThatFits:(CGSize)size { | |
return kSize; | |
} | |
- (void)tick:(CADisplayLink *)link { | |
if (_lastTime == 0) { | |
_lastTime = link.timestamp; | |
return; | |
} | |
_count++; | |
NSTimeInterval delta = link.timestamp - _lastTime; | |
if (delta < 1) return; | |
_lastTime = link.timestamp; | |
float fps = _count / delta; | |
_count = 0; | |
CGFloat progress = fps / 60.0; | |
UIColor *color = [UIColor colorWithHue:0.27 * (progress - 0.2) saturation:1 brightness:0.9 alpha:1]; | |
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%d FPS",(int)round(fps)]]; | |
[text setColor:color range:NSMakeRange(0, text.length - 3)]; | |
[text setColor:[UIColor whiteColor] range:NSMakeRange(text.length - 3, 3)]; | |
text.font = _font; | |
[text setFont:_subFont range:NSMakeRange(text.length - 4, 1)]; | |
self.attributedText = text; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment