2015-08-07 12:31:48 +02:00

87 lines
1.9 KiB
Objective-C

//
// UIView+Overlay.m
// Strannik
//
// Created by Anton Gubarenko on 03.07.15.
// Copyright (c) 2015 Anton Gubarenko. All rights reserved.
//
#import "UIView+Overlay.h"
static const NSInteger kOverlayTag = 1001;
static NSString* const kOverlayKey = @"kOverlayKey";
@implementation UIView (Overlay)
- (void) ag_addOverlayWithColor: (UIColor*) color
{
CALayer *overlay = [self ag_layer];
if (!overlay)
{
CALayer *overlayLayer = [CALayer layer];
overlayLayer.frame = self.frame;
[overlayLayer setValue: [NSNumber numberWithInt: kOverlayTag]
forKey: kOverlayKey];
[overlayLayer setBackgroundColor: color.CGColor];
[self.layer addSublayer: overlayLayer];
}
else
{
[overlay setBackgroundColor: color.CGColor];
}
}
- (void) ag_addOverlayToTheBackWithColor: (UIColor*) color
{
CALayer *overlay = [self ag_layer];
if (!overlay)
{
CALayer *overlayLayer = [CALayer layer];
overlayLayer.frame = self.frame;
[overlayLayer setValue: [NSNumber numberWithInt: kOverlayTag]
forKey: kOverlayKey];
[overlayLayer setBackgroundColor: color.CGColor];
[self.layer insertSublayer: overlayLayer
atIndex: 0 ];
}
else
{
[overlay setBackgroundColor: color.CGColor];
}
}
- (CALayer*) ag_layer
{
for (CALayer *subLayer in [self.layer sublayers])
{
if ([subLayer valueForKey: kOverlayKey])
{
return subLayer;
}
}
return nil;
}
- (void) ag_removeOverlay
{
CALayer *overlay = [self ag_layer];
if (overlay)
{
[overlay removeFromSuperlayer];
}
}
- (void) layoutSubviews
{
for (CALayer *subLayer in [self.layer sublayers])
{
if ([subLayer valueForKey: kOverlayKey])
{
subLayer.frame = self.frame;
break;
}
}
}
@end