React-Native PencilKit: штрихи по краям холста мерцают на пару секунд, когда пользователь рисует после увеличения масштаIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 React-Native PencilKit: штрихи по краям холста мерцают на пару секунд, когда пользователь рисует после увеличения масшта

Сообщение Anonymous »

Реализован iOS PencilKit для React-native с собственным мостом. Область содержимого CanvasView можно панорамировать и масштабировать.
Однако я сталкиваюсь со странным поведением...
При рисовании в области содержимого при полном уменьшении масштаба (область холста полностью видна) рисунок на холсте ведет себя совершенно нормально.
Однако при увеличении масштаба (так что видна только часть холста) и пользователь начинает рисовать, штрихи по нижнему и верхнему краю области содержимого будут мигать пару секунд. Почему он это делает?
Кроме того, если я установлю минимальное значение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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»