Как написать индивидуальный жест для увеличения размера представления во всем направлении (i.e) в исходной части и размере представления.Пользовательский жест для увеличения размера представления
Пример:
- пользователь должен касаться вида в любом из угла. либо близко к стороне происхождения, либо к стороне обзора.
Пример: размер рамы составляет (100,100,200,200).
, а минимальное расстояние касания составляет 15 пикселей с любой стороны.
так, если сенсорная местоположение пользователя находится в (X=15,Y=40)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
метод означает, что прикосновение вблизи к стороне происхождения.
же, если пользователь сенсорного расположение (X=15, Y=190) in
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
метод означает прикосновение находится рядом с бокового размером.
Мой код:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
if([touches count] != self.touchMinimumCount ||
[[touches anyObject] tapCount] > self.tapMinimumCount)
{
self.state = UIGestureRecognizerStateFailed;
return;
}
self.startPoint = [[touches anyObject] locationInView:self.view];
self.viewFrame = self.view.frame;
if(((self.startPoint.x - self.view.bounds.origin.x) <= self.minimumTouchDistance) ||
((self.startPoint.y - self.view.bounds.origin.y) <= self.minimumTouchDistance) ||
((ABS(self.startPoint.x - self.view.bounds.size.width)) <= self.minimumTouchDistance) ||
((ABS(self.startPoint.y - self.view.bounds.size.height)) <= self.minimumTouchDistance))
{
self.state = UIGestureRecognizerStatePossible;
if(((self.startPoint.x - self.view.bounds.origin.x) <= self.minimumTouchDistance) ||
((self.startPoint.y - self.view.bounds.origin.y) <= self.minimumTouchDistance))
{
self.currentTouchPosition = touchPositionIsOrigin;
}
else if(((ABS(self.startPoint.x - self.view.bounds.size.width)) <= self.minimumTouchDistance) ||
((ABS(self.startPoint.y - self.view.bounds.size.height)) <= self.minimumTouchDistance))
{
self.currentTouchPosition = touchPositionIsSize;
}
}
else
{
self.state = UIGestureRecognizerStateFailed;
}
}
Мой жест возможно состояние настройки, если штрихом в сторону только на ощупь расстояние.
Теперь я хочу изменить размер рамки просмотра в соответствии с движением пальца пользователя.
- Если пользователь коснется стороны происхождения и движется в направлении влево, вы хотите изменить начало. X вид и ширина также хотите увеличить.
- если пользователь коснется стороны происхождения и переместится в направлении верхнего направления, вы хотите изменить начало. Вид и ширина также должны увеличиваться.
- Если пользователь коснется стороны происхождения и движется вправо, значит, необходимо изменить начальную точку зрения.
- если пользователь коснется стороны происхождения и движется в направлении нижнего направления, вы хотите изменить начало координат.
- Если пользователь коснется стороны размера и движется в направлении влево, вы хотите уменьшить ширину обзора.
- Если пользователь коснется стороны размера и движется в направлении верхнего направления, вы хотите уменьшить высоту изображения.
- Если пользователь коснется стороны размера и движется вправо, значит, нужно увеличить ширину обзора.
- Если пользователь коснется стороны размера и движется в направлении нижнего направления, вы хотите увеличить высоту изображения.
все это изменяется в соответствии с пальцем пользователя в этом виде во время движения.
Мой код:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];
if(self.state == UIGestureRecognizerStateFailed) return;
direction currentDirection;
CGPoint currentLocation = [[touches anyObject] locationInView:self.view];
if(self.state == UIGestureRecognizerStatePossible ||
self.state == UIGestureRecognizerStateChanged)
{
if((currentLocation.x - self.startPoint.x) > 0)
{
currentDirection = directionRight;
self.state = UIGestureRecognizerStateChanged;
if(self.currentTouchPosition == touchPositionIsOrigin)
{
distanceInOriginX = // need to implement.
distanceInSizeX = // need to implement.
}
else if(self.currentTouchPosition == touchPositionIsSize)
{
distanceInSizeX = // need to implement.
}
}
else if((currentLocation.x - self.startPoint.x) < 0)
{
currentDirection = directionLeft;
self.state = UIGestureRecognizerStateChanged;
if(self.currentTouchPosition == touchPositionIsOrigin)
{
distanceInOriginX = // need to implement.
distanceInSizeX = // need to implement.
}
else if(self.currentTouchPosition == touchPositionIsSize)
{
distanceInSizeX = // need to implement.
}
}
else if((currentLocation.y - self.startPoint.y) >= 0)
{
currentDirection = directionBottom;
self.state = UIGestureRecognizerStateChanged;
if(self.currentTouchPosition == touchPositionIsOrigin)
{
distanceInOriginY = // need to implement.
distanceInSizeY = // need to implement.
}
else if(self.currentTouchPosition == touchPositionIsSize)
{
distanceInSizeY = // need to implement.
}
}
else if((currentLocation.y - self.startPoint.y) < 0)
{
currentDirection = directionTop;
self.state = UIGestureRecognizerStateChanged;
if(self.currentTouchPosition == touchPositionIsOrigin)
{
distanceInOriginY = // need to implement.
distanceInSizeY = // need to implement.
}
else if(self.currentTouchPosition == touchPositionIsSize)
{
distanceInSizeY = // need to implement.
}
}
else
{
currentDirection = directionUnknown;
}
self.originPoint = CGPointMake(distanceInOriginX, distanceInOriginY);
self.sizePoint = CGPointMake(distanceInSizeX, distanceInSizeY);
}
}
я упомянул // необходимость осуществления. где когда-либо я хочу, чтобы код для достижения функциональности, о которой я упоминал в этих точках.так, любезно помогите пойти ahed.
Если у меня было неправильное средство, поделитесь лучшим способом сделать тот же тип жестов.
Любой пример есть также любезно предоставлен здесь. спасибо заранее.
но пинч жест будет изменять вид по всей стороне, но я хочу только с одной стороны в одно время. – Nagarajan