0
我有我编程创建的UIButton
。其实它不应该是UIButton
,我只需要有可能在图像上方标记一些区域。UIButton - 移动和缩放
所以我需要它的功能 - 移动对象并调整它的大小。对于这个我有2种方法:
- (void) objMove:(id) sender withEvent:(UIEvent *) event
{
UIControl *control = sender;
UITouch *t = [[event allTouches] anyObject];
CGPoint pPrev = [t previousLocationInView:control];
CGPoint p = [t locationInView:control];
CGPoint center = control.center;
center.x += p.x - pPrev.x;
center.y += p.y - pPrev.y;
control.center = center;
}
- (void)objScale:(UIPinchGestureRecognizer *)recognizer
{
UIView *pinchView = recognizer.view;
CGRect bounds = pinchView.bounds;
CGPoint pinchCenter = [recognizer locationInView:pinchView];
pinchCenter.x -= CGRectGetMidX(bounds);
pinchCenter.y -= CGRectGetMidY(bounds);
CGAffineTransform transform = pinchView.transform;
transform = CGAffineTransformTranslate(transform, pinchCenter.x, pinchCenter.y);
CGFloat scale = recognizer.scale;
transform = CGAffineTransformScale(transform, scale, scale);
transform = CGAffineTransformTranslate(transform, -pinchCenter.x, -pinchCenter.y);
pinchView.transform = transform;
recognizer.scale = 1.0;
}
规模工程确定。移动看起来不错,直到我改变对象的大小 - 当我增加对象时,它变得比手指慢,反之亦然 - 如果对象比原始对象小,它的移动速度比手指快。为什么它像这样工作?
您是否尝试过在更改大小后更新按钮大小?当你尝试移动它时,他可能会对旧尺寸作出反应 –
@Ricardo Alves,我已经试过了,像这样'pinchView.frame = CGRectMake(bounds.origin.x,bounds.origin.y,bounds.origin.x + bounds.size.width,bounds.origin.y + bounds.size.height);'在'objScale'中打破scale =( – user5599807