Я бы создал подкласс UIView
, который обеспечивает чистый черный вид.Затем вам нужно будет передать сенсорные события через представление, поэтому вам нужно будет переопределить -pointInside:withEvent:
, вернуть NO и передать сообщение в суперпредставление.Вставьте этот вид как подпредставление вида, который вы пытаетесь затемнить.Используйте свойство alpha
для управления эффектом затемнения.
Редактировать Мне скучно.Вот кое-что, что я только что скинул.
IADimmingView.h
#import <UIKit/UIKit.h>
@interface IADimmingView : UIView
- (id)initWithContainingView:(UIView *)view;
- (void)dim;
@end
IADimmingView.m
#import "IADimmingView.h"
@interface IADimmingView ()
@property (strong, nonatomic) UIView *containingView;
@end
#pragma mark -
@implementation IADimmingView
@synthesize containingView;
- (id)initWithContainingView:(UIView *)view
{
NSParameterAssert(view);
self = [super initWithFrame:view.frame];
if (!self)
return nil;
containingView = view;
self.backgroundColor = [UIColor blackColor];
return self;
}
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
[self.containingView pointInside:point withEvent:event];
return NO;
}
- (void)dim
{
[self.containingView addSubview:self];
}
@end
Вваш контроллер представления, он используется так ...
IADimmingView *dimmingView = [[IADimmingView alloc] initWithContainingView:self.tabBarController.tabBar];
dimmingView.alpha = 0.75;
[dimmingView dim];