2014-09-28 4 views
0

Привет, я делаю простую игру с базовым материалом, где есть объект, который появляется на экране.как прокрутить до центральной позиции объекта

Я пытаюсь сделать так, чтобы каждый раз, когда объект всплывает, экран будет прокручиваться до объекта и центрировать его на экране. В основном у меня есть UIView, у которого есть объекты, всплывающие внутри него, и что UIView является подзором UIScrollView. Все это подзаголовок self.view моего ViewController. Я использую UIScrollview для прокрутки содержимого своего поднабора с объектами в нем. Я не уверен, что UIScrollView является идеальным вариантом для того, что я хочу сделать, но я искал способ прокрутки позиции объекта и центра его в середине устройства. Идеально с анимацией.

Если кто-нибудь знает способ или формулу, которая могла бы помочь мне в этом, это было бы здорово. Заранее спасибо: D

Update: Я на самом деле не много кода в отношении этого добавления мнения друг в друга, за исключением:

self.world = [[UIView alloc]initWithFrame:CGRectMake(0, 0, currentDeviceWidth*4, currentDeviceHeight*2.2)]; 
self.world.backgroundColor = [UIColor blueColor]; 

_scrollView = [[UIScrollView alloc] initWithFrame:[[self view] bounds]]; 
[_scrollView setContentSize:self.world.frame.size]; 

[_scrollView addSubview:self.world]; 
[[self view] addSubview:_scrollView]; 

но ниже простой образ того, что я хочу для достижения. Стрелки - это просто представление возможного направления прокрутки.

объект Apple, находится вне части экрана Примечание: объект яблоко подвид из self.world и self.world является подвид из Scrollview

apple object is off the side of the screen Note: apple object is a subview of self.world and self.world is a subview of scrollview

Финиш взгляд, где теперь Scrollview имеет прокрутки self.world, где объект яблоко находится в центре экрана

The finish look is where now the scrollview has scroll self.world to where the apple object is in the center of the screen

Просто глядя в основном выполнить, как пользователь может вручную прокручивать объект т o центр, но вместо этого сделайте это автоматически без использования касания пользователя.

+0

Попробуйте уточнить вопрос. И, возможно, добавьте часть своего кода, чтобы мы могли увидеть, как улучшить ваше решение. Захват изображений также будет большим, чтобы показать, чего вы пытаетесь достичь. – guardabrazo

ответ

1

Я думаю, вам может понадобиться contentOffset, что является собственностью компании UIScrollView. Это свойство контролирует положение contentView.
Теперь, скажем, ваше яблоко находится в центре self.world, затем анимационный положить его в середине, как это:

[UIView animateWithDuration: 0.5//you can put any float as you want 
        animations:^{self.world.contentOffset = CGPointMake((_scrollview.frame.size.width - self.world.frame.size.width)/2, (_scrollview.frame.size.height - self.world.frame.size.height)/2); 
        }]; 

Если вы кладете яблоко в любом другом месте, вы должны рассчитать положение самостоятельно, и установите contentOffset вправо. Я думаю, что любая позиция, отличная от центра, очень сложна, вы должны учитывать положение яблока в представлении self.world.

+0

спасибо, что я использовал метод, который вы сказали, и определенно сделал то, что хотел. – user2942636

+0

Я рад помочь. – WindMemory

0

ли вы попробовать

[_scrollView scrollRectToVisible:newView.frame animated:(BOOL)animated] 

Что может быть сложно о том, что вы пытаетесь сделать, это позиционирование взглядов, так что они всегда в системе координат зрения _scroll, например, x> = средний вид & y> = средний вид.

+0

, так как newView это означает, что мне нужно создать новый вид?или что представление объекта (символ яблока в примере изображения) – user2942636

+0

Это прямой вид, который вы хотите сосредоточить. – genalipsis

Смежные вопросы