87 lines
1.9 KiB
Objective-C
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
|