Прозрачный вид в верхней части UITableView - PullRequest
1 голос
/ 22 апреля 2011

Когда вы открываете Mail на iPhone и нажимаете «Изменить», выбираете электронную почту и нажимаете «Переместить», появляется UITableView со всеми папками, в которые вы можете поместить почту. Вверху находится прозрачный вид, который показывает выбранную вами электронную почту,Когда вы перемещаете палец вниз, представление остается на месте, когда вы перемещаете его вверх, ячейки видны через прозрачное представление.

Как Apple настроила это представление?Я подумал о двух способах, но оба они не работают:

  • Представление возвращается как представление заголовка из UITableView.Не работает, потому что представление остается сверху, даже если представление таблицы перемещено вниз.

  • Представление является статическим сверху, рамка представления таблицы начинается снизу.прозрачного вида.Это не работает, потому что когда табличное представление перемещено вверх, оно видно через прозрачное представление.

Есть идеи, как воссоздать этот эффект?

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

Вам необходимо создать прозрачное представление, а затем добавить его в качестве подпредставления к контроллеру представления, так что это брат UITableView. Это можно сделать методом viewDidLoad().

- (void)viewDidLoad
{
    int viewHeight = 50;

    // Assume myTableView is a UITableView variable
    myTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 44) style:UITableViewStylePlain];
    myTableView.scrollIndicatorInsets = UIEdgeInsetsMake(viewHeight, 0, 0, 0);
    myTableView.contentInset = UIEdgeInsetsMake(viewHeight, 0, 0, 0);

    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,viewHeight)]; 

    // Configure your view here.
    myView.backgroundColor = [UIColor colorWithRed:0.0 green:0.7 blue:0.8 alpha:0.75];

    [self.view addSubview:myTableView];
    [self.view addSubview:myView];
    [myView release];

}

Вы также можете настроить свой вид, используя XIB, но я оставлю это как упражнение для вас.

Редактировать: Убрано требование для методов делегата UITableView и пользовательского представления заголовка, используя вместо этого свойство contentInset.

Примечание: см. Дополнительные комментарии ниже.

0 голосов
/ 28 ноября 2012

Для метода XIB:

  • Создание нового UIViewController (с XIB)
  • Добавьте к нему свой UITableView и свой UIView.
  • Сделайте их обоими подпредставлениями UIView по умолчанию (называемые View) и убедитесь, что они добавлены в правильном порядке. UITableView должен быть первым в списке, ваше представление должно быть вторым (поэтому ваше представление находится над UITableView).

  • В файле .m реализовать минимум для UITableViewDataSource и UITableViewDelegate:

    - (NSInteger) numberOfSectionsInTableView: (UITableView *) tableView;

    - (NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection: (NSInteger) раздел;

    - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath;

    - (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath;

  • В Интерфейсном Разработчике выберите список UITableView и перейдите в «Инспектор соединений». Там перетащите источник данных и делегируйте «Владелец файла».

Сохраните и запустите. Вы должны быть сделаны сейчас.

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