Однако я сталкиваюсь со странным поведением...
При рисовании в области содержимого при полном уменьшении масштаба (область холста полностью видна) рисунок на холсте ведет себя совершенно нормально.
Однако при увеличении масштаба (так что видна только часть холста) и пользователь начинает рисовать, штрихи по нижнему и верхнему краю области содержимого будут мигать пару секунд. Почему он это делает?
Кроме того, если я установлю минимальное значениеZoomScale, то по сути это будет похоже на установку resizeMode = 'cover' для области содержимого (т. е. область содержимого покрывает весь кадр ), у него нет такого странного поведения. Однако это означает, что пользователь не сможет просмотреть всю область содержимого.
Код: Выделить всё
- (UIView *)view {
CGFloat deviceWidth = [UIScreen mainScreen].bounds.size.width;
CGFloat deviceHeight = [UIScreen mainScreen].bounds.size.height;
CGRect viewRect = CGRectMake(0, 0, deviceWidth, deviceHeight);
_canvasView = [[CanvasView alloc] initWithFrame:viewRect];
_canvasView.zoomScale = 1.0;
_canvasView.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.0];
_canvasView.drawingPolicy = PKCanvasViewDrawingPolicyAnyInput;
_canvasView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
_canvasView.multipleTouchEnabled = true;
_canvasView.delegate = self;
return _canvasView;
}
RCT_EXPORT_METHOD(setupCanvas
: (nonnull NSNumber *)viewTag imagePath
: (NSString *)imagePath width
: (CGFloat)width height
: (CGFloat)height traceImagePath
: (NSString *)traceImagePath traceImageSize
: (nonnull NSNumber *)traceImageSize) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Set Toolpicker");
[self setupToolPicker];
NSLog(@"Set Canvas size");
[self setCanvasDimensions:width height:height];
if (imagePath != (id)[NSNull null] && imagePath.length != 0) {
NSLog(@"Draw on image");
[self drawOnImage:imagePath];
}
});
}
- (void)setCanvasDimensions:(CGFloat)width height:(CGFloat)height {
[self->_canvasView setContentSize:CGSizeMake(width, height)];
CGFloat canvasRepWidth = [[UIScreen mainScreen] bounds].size.width;
self->_canvasView.minimumZoomScale = canvasRepWidth
self->_canvasView.maximumZoomScale = 4.0;
self->_canvasView.zoomScale = canvasRepWidth / width;
self->_canvasView.contentOffset = CGPointZero;
}

Подробнее здесь: https://stackoverflow.com/questions/791 ... r-a-couple