Как измерить положение объектов пользовательского интерфейса на экране симулятора iPhone

StackOverflow https://stackoverflow.com/questions/2146952

Вопрос

Я рассчитал позиции и смещения на бумаге.Я написал код и отладил его, чтобы получить ожидаемые результаты.Однако в симуляторе iPhone все накладывается друг на друга примерно на 15 пикселей.

Чтобы продолжить отладку, мне нужно знать, где именно находятся объекты пользовательского интерфейса на экране.

Связано с клавиатурой всплывающего поиска и изменением размера UITableView между статической UISearchBar и динамически добавляемой UITabBar (табличный вид встроен в одну из вкладок).Нет, я действительно не хотите использовать какие-либо жестко закодированные значения из-за поворота и разных размеров экрана.

Как я могу это выяснить?

- (void)keyboardWasShown:(NSNotification*)aNotification
{
if (self.keyboardShown)
    return;

// Get keyboard dimensions
NSDictionary* info = [aNotification userInfo];
NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
CGSize kbSize = [aValue CGRectValue].size;
NSValue* endValue = [info objectForKey:UIKeyboardCenterEndUserInfoKey];
CGPoint endCenter = [endValue CGPointValue];

CGRect frame = myView.frame;
frame.size.height = endCenter.y - kbSize.height/2 - frame.origin.y;

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];

myView.frame = frame;

[UIView commitAnimations];

self.keyboardShown = YES;
}

...кодируйте на всякий случай, если есть очевидные ошибки, которые я больше не вижу...

Это было полезно?

Решение

Вероятно, ваш лучший выбор - это UIView convertPoint:toView:.Чтобы узнать, где находится данный вид, используйте:

CGPoint myPoint = [myView convertPoint:CGPointMake(0, 0) toView:((YourAppDelegate *)[[UIApplication sharedApplication] delegate]).window];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top