gpt4 book ai didi

ios - 在两个图像之间绘制和更新线

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:57 27 4
gpt4 key购买 nike

我目前有两个 UIImageView,可以拖动它们在屏幕上移动:

- (void)panWasRecognized:(UIPanGestureRecognizer *)panner {
UIView *draggedView = panner.view;
CGPoint offset = [panner translationInView:draggedView.superview];
CGPoint center = draggedView.center;
draggedView.center = CGPointMake(center.x + offset.x, center.y + offset.y);
[panner setTranslation:CGPointZero inView:draggedView.superview];
}

- (void)panWasRecognized2:(UIPanGestureRecognizer *)panner2 {
UIView *draggedView = panner2.view;
CGPoint offset = [panner2 translationInView:draggedView.superview];
CGPoint center = draggedView.center;
draggedView.center = CGPointMake(center.x + offset.x, center.y + offset.y);
[panner2 setTranslation:CGPointZero inView:draggedView.superview];
}

但是我不确定我将如何做下一步,即在 UIImageViews 的两个中心之间画一条线,随着图像被用户移动而不断更新。我大致知道如何从一个点到另一个点画一条简单的线,但是有谁能建议如何使这条线与两个图像的移动保持同步?提前致谢:)

最佳答案

您可以通过子类化父 UIView 轻松地做到这一点。只需创建一个类并复制粘贴代码即可

DrawView.h

#import <UIKit/UIKit.h>

@interface DrawView : UIView
-(void)refreshWithPointA:(CGPoint)pointA andPointB:(CGPoint)pointB;
@end

DrawView.m

#import "DrawView.h"

@interface DrawView()
@property(nonatomic, strong) UIBezierPath *linePath;
@end

@implementation DrawView

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}



-(void)refreshWithPointA:(CGPoint)pointA andPointB:(CGPoint)pointB{
_linePath = [UIBezierPath bezierPath];
[_linePath setLineWidth:2.0];
[_linePath moveToPoint:pointA];
[_linePath addLineToPoint:pointB];
[self setNeedsDisplay];
}


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{

// Drawing code
[[UIColor blackColor] setStroke];
[_linePath stroke];
}


@end

现在只需更改已添加 UIImageView 的父 UIView 类。并将标签 12 分配给两个 ImageView 。并在您的 pangesture 选择器

中使用下面的方法
-(void)refreshLine{
CGPoint centreA=[self.view viewWithTag:1].center;
CGPoint centreB=[self.view viewWithTag:2].center;
[self.drawView refreshWithPointA:centreA andPointB:centreB];
}

将方法放在两个手势识别器的最后一行,如下所示

- (void)panWasRecognized:(UIPanGestureRecognizer *)panner {
//YOUR OLD CODE

[self refreshLine];
}

- (void)panWasRecognized2:(UIPanGestureRecognizer *)panner {

//YOUR OLD CODE

[self refreshLine];
}

以及您添加 UIImageViews 的位置,它会立即绘制线条。也为您的 UIView 创建一个 IBOutlet 并分配新类。

就是这样。

干杯。

关于ios - 在两个图像之间绘制和更新线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24608312/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com