当您在iPhone上打开邮件并点击编辑,选择一个电子邮件并点按移动时,会出现UITableView
,其中包含您可以将邮件放入的所有文件夹。顶部是一个显示电子邮件的透明视图你选择了。当您向下移动手指时,视图会保持原位,当您向上移动时,通过透明视图可以看到单元格。
apple如何配置此视图?我想到了两种方法,但它们都不起作用:
视图作为UITableView
的标题视图返回。不起作用,因为即使向下移动表格视图,视图也会保持在顶部。
视图在顶部是静态的,表视图的框架从透明视图的底部开始。这不起作用,因为当表格视图向上移动时,透过视图可以看到它。
有关如何重新创建此效果的任何想法?
答案 0 :(得分:2)
您需要创建透明视图,然后将其作为子视图添加到视图控制器中,以便它是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
委托方法和自定义标题视图的要求。
注意:请参阅下面的其他评论。
答案 1 :(得分:-1)
对于XIB方法:
将它们设为默认UIView(称为View)的子视图,并确保以正确的顺序添加它们。 UITableView应该是列表中的第一个,您的视图应该是第二个(因此您的视图位于UITableView之上)。
在.m文件中实现UITableViewDataSource和UITableViewDelegate的最小值:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
在Interface Builder中,选择UITableView列表并转到“Connection Inspector”。拖动dataSource并委托给'File Owner'。
保存并运行。你现在应该完成。