Якорь UIView - PullRequest
       18

Якорь UIView

1 голос
/ 04 апреля 2009

У меня есть UITableViewController внутри UINavigationController.

Я хочу, чтобы UIView отображался поверх верхней части табличного представления, но не поддается прокрутке табличного представления.

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

Каков наилучший способ достичь этого?

РЕДАКТИРОВАТЬ: Чтобы уточнить, представление должно плавно перемещаться поверх таблицы.

Большое спасибо!

Ответы [ 4 ]

2 голосов
/ 17 июня 2009

Я также хотел иметь плавающий UIView поверх моего tableView.
Итак, в моем RootViewController (который является UITableViewController) это работало для меня

- (void)viewDidLoad {
    /* mylabel is a UILabel set in this class */
    [self.mylabel setUserInteractionEnabled:NO];

    /* navigationController comes from higher up in the navigation chain */
    [self.navigationController.view addSubview:self.mylabel]; 
 }
1 голос
/ 07 апреля 2009

Подобно тому, что сказал Питер, создайте UIView, который будет содержать и TableView, и UIView в подклассах. Такие как:

UIView *view = [[UIView alloc] initWithFrame:frame]; // Define frame as you like

[view addSubview:myTableView]; // This is the reference to your tableView
[view addSubview:myAnchoredView]; // This is the reference to your UIView "floating" subclass

Вам также необходимо отключить взаимодействие с пользователем для вашего плавающего представления. Я не знаю, передаст ли это касания базовому UIView или нет:

[myAnchoredView setUserInteractionEnabled:NO];

Если это блокирует прикосновения к вашему табличному представлению, вам может потребоваться передать ссылку на ваше табличное представление в привязанное представление при инициализации, а затем передать сенсорные события. Вы можете сделать это, переопределив методы сенсорного ответа в UIResponder. (Если есть лучший способ, кто-нибудь, пожалуйста, говорите.)

0 голосов
/ 11 ноября 2010

Я исследовал, как UIScrollView сохраняет свой scrollIndicator над содержимым UIScrollView и, тем не менее, не перемещается, изучая UIScrollView в отладчике.

scrollIndicators являются UIImageViews. И вы можете видеть, что они являются прямыми потомками самого UIScrollView. Вы также можете видеть, что любой прокручиваемый контент также является прямым потомком. Так почему же индикаторы прокрутки не двигаются?

Я пытался постоянно обновлять позицию моего статического контента в - (void)scrollViewDidScroll:(UIScrollView *)scrollView, что, на удивление, работает. Я не уверен, так ли это делает сам UIScrollView, но без какой-то частной магии, это должно быть что-то вроде этого.

0 голосов
/ 04 апреля 2009

Вы имеете в виду, что привязанное представление должно выглядеть прозрачным над UITableView или чуть выше, то есть привязанное представление использует верхние 20% доступного пространства, а табличное представление использует остальное?

В любом случае создайте UIView, содержащий привязанное представление и табличное представление. Если вы хотите, чтобы привязанное представление было прозрачным над табличным представлением, это немного сложно, потому что для прокрутки табличного представления касания должны проходить через закрепленное представление.

Добавьте контроллер представления окружающего вида в контроллер навигации вместо просто таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...