簡體   English   中英

圖像+捏手勢識別器

[英]Image + Pinch gesture recognizer

我通過編程不使用情節提要在視圖內部創建了一個imageview。 並且我為該視圖添加了捏手勢識別器..但是它應該以特定比例以各種方式捏住圖像嗎? 有什么辦法嗎?

-(void)handlePinchWithGestureRecognizer:(UIPinchGestureRecognizer *)pinchGestureRecognizer{

CGFloat lastScale = 1.0;
if([pinchGestureRecognizer state] == UIGestureRecognizerStateBegan) {
    // Reset the last scale, necessary if there are multiple objects with different scales
    lastScale = [pinchGestureRecognizer scale];
}

if ([pinchGestureRecognizer state] == UIGestureRecognizerStateBegan ||
    [pinchGestureRecognizer state] == UIGestureRecognizerStateChanged) {

    CGFloat currentScale = [[[pinchGestureRecognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];

    // Constants to adjust the max/min values of zoom
    const CGFloat kMaxScale = 2.0;
    const CGFloat kMinScale = 1.0;

    CGFloat newScale = 1 -  (lastScale - [pinchGestureRecognizer scale]);
    newScale = MIN(newScale, kMaxScale / currentScale);
    newScale = MAX(newScale, kMinScale / currentScale);
    self.documentImageView.transform = CGAffineTransformScale(self.documentImageView.transform, newScale, newScale);

    lastScale = [pinchGestureRecognizer scale];  // Store the previous scale factor for the next pinch gesture call
}
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchWithGestureRecognizer:)];
[self.documentImage addGestureRecognizer:pinchGestureRecognizer];
}

//

- (void)setExtractedImageForTableView:(UIImage *)extractedImage {
self.documentImageView.image = nil;
self.documentImageView = nil;
self.documentImageView = [[UIImageView alloc] initWithImage:extractedImage];
self.documentImageView.contentMode = UIViewContentModeScaleAspectFit;
if (!CGSizeEqualToSize(extractedImage.size, CGSizeZero)) {
    self.documentImageView.frame = CGRectMake(CGRectGetMinX(self.view.frame), CGRectGetMinY(self.tableView.frame) + 70, CGRectGetWidth(self.view.frame), (extractedImage.size.height/extractedImage.size.width) * CGRectGetWidth(self.view.frame));
    self.segmentedView.frame = self.documentImage.frame;
    [self.segmentedView addSubview:self.segment];
    [self.segmentedView addSubview:self.documentImageView];
    [self.tableView.tableHeaderView addSubview:self.segment];
    [self.tableView.tableHeaderView addSubview:self.documentImageView];
    CGRect frame = self.documentImageView.frame;
    frame.size.height = self.documentImageView.frame.size.height + 100;
    self.tableView.frame = CGRectMake(0, 0, 400, 300);
    self.tableView.tableHeaderView.frame = frame;
}
}

我想您只是錯過了添加以下行

[self.documentImageView setUserInteractionEnabled:YES]; 

希望這會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM