Various Fixes

This commit is contained in:
Ilya Laktyushin
2021-07-27 21:39:35 +03:00
parent 9267b394b0
commit e6994ded28
3 changed files with 38 additions and 18 deletions

View File

@@ -490,10 +490,18 @@ const NSInteger PGCameraFrameRate = 30;
}
} else if (marks.count == 1) {
CGFloat mark = [marks.firstObject floatValue];
if (backingLevel < mark) {
realLevel = 1.0 + 1.0 * (backingLevel - 1.0) / (mark - 1.0);
} else {
realLevel = 2.0 + 6.0 * (backingLevel - mark) / (self.maxZoomLevel - mark);
if ([self hasTelephotoCamera]) {
if (backingLevel < mark) {
realLevel = 1.0 + 1.0 * (backingLevel - 1.0) / (mark - 1.0);
} else {
realLevel = 2.0 + 6.0 * (backingLevel - mark) / (self.maxZoomLevel - mark);
}
} else if ([self hasUltrawideCamera]) {
if (backingLevel < mark) {
realLevel = 0.5 + 0.5 * (backingLevel - 1.0) / (mark - 1.0);
} else {
realLevel = 1.0 + 7.0 * (backingLevel - mark) / (self.maxZoomLevel - mark);
}
}
}
@@ -504,10 +512,8 @@ const NSInteger PGCameraFrameRate = 30;
}
- (CGFloat)minZoomLevel {
if (iosMajorVersion() >= 13.0) {
if (self.videoDevice.isVirtualDevice && self.videoDevice.constituentDevices.firstObject.deviceType == AVCaptureDeviceTypeBuiltInUltraWideCamera) {
return 0.5;
}
if (self.hasUltrawideCamera) {
return 0.5;
}
return 1.0;
}
@@ -553,10 +559,19 @@ const NSInteger PGCameraFrameRate = 30;
}
} else if (marks.count == 1) {
CGFloat mark = [marks.firstObject floatValue];
if (zoomLevel < 2.0) {
backingLevel = 1.0 + ((level - 1.0) / 1.0) * (mark - 1.0);
} else {
backingLevel = mark + ((level - 2.0) / 6.0) * (self.maxZoomLevel - mark);
if ([self hasTelephotoCamera]) {
if (zoomLevel < 2.0) {
backingLevel = 1.0 + ((level - 1.0) / 1.0) * (mark - 1.0);
} else {
backingLevel = mark + ((level - 2.0) / 6.0) * (self.maxZoomLevel - mark);
}
} else if ([self hasUltrawideCamera]) {
if (level < 1.0) {
level = MAX(0.5, level);
backingLevel = 1.0 + ((level - 0.5) / 0.5) * (mark - 1.0);
} else {
backingLevel = mark + ((level - 1.0) / 7.0) * (self.maxZoomLevel - mark);
}
}
}
}

View File

@@ -469,7 +469,7 @@
{
UIView *view = [super hitTest:point withEvent:event];
if (CGRectContainsPoint(_zoomModeView.frame, point)) {
if (!_zoomModeView.isHidden && CGRectContainsPoint(_zoomModeView.frame, point)) {
CGPoint zoomPoint = [self convertPoint:point toView:_zoomModeView];
return [_zoomModeView hitTest:zoomPoint withEvent:event];
}

View File

@@ -318,9 +318,9 @@
switch (gestureRecognizer.state) {
case UIGestureRecognizerStateChanged:
{
CGFloat delta = -translation.x / 100.0;
CGFloat delta = -translation.x / 60.0;
if (_zoomLevel > 2.0) {
delta *= 2.2;
delta *= 3.5;
}
_zoomLevel = MAX(_minZoomLevel, MIN(_maxZoomLevel, _zoomLevel + delta));
@@ -385,11 +385,16 @@
if ([value isEqual:@"1,0×"] || [value isEqual:@"1×"]) {
value = @"0,9×";
}
[_leftItem setValue:value selected:true animated:animated];
[_centerItem setValue:@"1" selected:false animated:animated];
if (_leftItem.superview != nil) {
[_leftItem setValue:value selected:true animated:animated];
[_centerItem setValue:@"1" selected:false animated:animated];
} else {
[_centerItem setValue:value selected:false animated:animated];
}
[_rightItem setValue:@"2" selected:false animated:animated];
} else if (zoomLevel < 2.0) {
[_leftItem setValue:@"0,5" selected:false animated:animated];
bool selected = _hasTelephotoCamera && _hasUltrawideCamera;
if ((zoomLevel - 1.0) < 0.025) {
[_centerItem setValue:@"1×" selected:true animated:animated];
} else {
@@ -399,7 +404,7 @@
if ([value isEqual:@"2×"]) {
value = @"1,9×";
}
[_centerItem setValue:value selected:true animated:animated];
[_centerItem setValue:value selected:selected animated:animated];
}
[_rightItem setValue:@"2" selected:false animated:animated];
} else {