class
TGAttachmentCameraView:
UIView
@property (nonatomic, copy) void (^pressed)(void);
@property (nonatomic, strong) TGMenuSheetPallete *pallete;
- (instancetype)initForSelfPortrait:(bool)selfPortrait;
@property (nonatomic, readonly) bool previewViewAttached;
- (void)detachPreviewView;
- (void)attachPreviewViewAnimated:(bool)animated;
- (void)willAttachPreviewView;
- (void)startPreview;
- (void)stopPreview;
- (void)resumePreview;
- (void)pausePreview;
- (void)setZoomedProgress:(CGFloat)progress;
- (TGCameraPreviewView *)previewView;
- (instancetype)initForSelfPortrait:(bool)selfPortrait
{
self = [super initWithFrame:CGRectZero];
if (self != nil)
{
self.backgroundColor = [UIColor clearColor];
_wrapperView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 84.0f, 84.0f)];
[self addSubview:_wrapperView];
TGPGCamera *camera = nil;
if ([TGPGCamera cameraAvailable])
{
camera = [[TGPGCamera alloc] initWithMode:PGCameraModePhoto position:selfPortrait ? PGCameraPositionFront : PGCameraPositionUndefined];
}
_camera = camera;
_previewView = [[TGCameraPreviewView alloc] initWithFrame:CGRectMake(0, 0, 84.0f, 84.0f)];
[_wrapperView addSubview:_previewView];
[camera attachPreviewView:_previewView];
_iconView = [[UIImageView alloc] initWithImage:TGComponentsImageNamed(@"AttachmentMenuInteractiveCameraIcon")];
[self addSubview:_iconView];
[self addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)]];
[self setInterfaceOrientation:[[LegacyComponentsGlobals provider] applicationStatusBarOrientation] animated:false];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOrientationChange:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
_fadeView = [[UIView alloc] initWithFrame:self.bounds];
_fadeView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_fadeView.backgroundColor = [UIColor blackColor];
_fadeView.hidden = true;
[self addSubview:_fadeView];
if (!TGMenuSheetUseEffectView)
{
static dispatch_once_t onceToken;
static UIImage *cornersImage;
dispatch_once(&onceToken, ^
{
CGRect rect = CGRectMake(0, 0, TGAttachmentMenuCellCornerRadius * 2 + 1.0f, TGAttachmentMenuCellCornerRadius * 2 + 1.0f);
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillRect(context, rect);
CGContextSetBlendMode(context, kCGBlendModeClear);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillEllipseInRect(context, rect);
cornersImage = [UIGraphicsGetImageFromCurrentImageContext() resizableImageWithCapInsets:UIEdgeInsetsMake(TGAttachmentMenuCellCornerRadius, TGAttachmentMenuCellCornerRadius, TGAttachmentMenuCellCornerRadius, TGAttachmentMenuCellCornerRadius)];
UIGraphicsEndImageContext();
});
_cornersView = [[UIImageView alloc] initWithImage:cornersImage];
_cornersView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_cornersView.frame = _previewView.bounds;
[_previewView addSubview:_cornersView];
}
_zoomedView = [[UIView alloc] initWithFrame:self.bounds];
_zoomedView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_zoomedView.backgroundColor = [UIColor whiteColor];
_zoomedView.alpha = 0.0f;
_zoomedView.userInteractionEnabled = false;
[self addSubview:_zoomedView];
if (iosMajorVersion() >= 11)
{
_fadeView.accessibilityIgnoresInvertColors = true;
_iconView.accessibilityIgnoresInvertColors = true;
}
}
return self;
}
camera (owns a camera)
wrapperView -> _previewView
-> _fadeView
-> _zoomedView