我正在尝试实现类似于 twitter 在您打开新的推文对话时所做的效果。它们从顶部下拉视图,缩小其他视图,但如果您关闭键盘,仍然允许您与所有视图进行交互。这显然不是模态视图,但我无法确定做类似事情的起点是什么。
问问题
323 次
1 回答
1
它作为一个视图层次结构看起来很直接,只是巧妙地装饰了艺术。底部是常规界面,上面是一个包含 UITextView 的视图,周围有一些漂亮的记事本艺术。
实现此目的的一种方法是将两个子视图挂在视图控制器的主视图下。第一个孩子包含记事本艺术和文本视图。它位于 0,-NOTEPAD_HEIGHT。第二个孩子位于 0,0 并占据整个父视图的边界。
撰写按钮告诉文本视图成为第一响应者,当编辑开始时......
- (void)textViewDidBeginEditing:(UITextView *)textView {
[self setNotepadHidden:NO animated:YES];
}
我经常制作以下形式的显示/隐藏方法来重新排列这样的事情......
- (void)setNotepadHidden:(BOOL)hidden animated:(BOOL)animated {
NSTimeInterval duration = (animated)? 0.3 : 0.0;
CGFloat offset = (hidden)? -NOTEPAD_HEIGHT : NOTEPAD_HEIGHT;
[UIView animateWithDuration:duration animations:^{
self.firstChild.frame = CGRectOffset(self.firstChild.frame, 0.0, offset);
self.secondChild.frame = UIEdgeInsetsInsetRect(self.secondChild.frame, UIEdgeInsetsMake(offset, 0, 0, 0));
}];
}
当你想再次隐藏它时,用 ...Hidden:YES 调用。确保第二个孩子的子视图具有自动调整大小的行为设置,以便当他们的父母缩小时他们做正确的事情。
我经常发现需要这样一个,也...
- (BOOL)isNotepadHidden {
return self.firstChild.frame.origin.y < 0.0;
}
希望这是一个好的开始。
于 2012-05-03T05:24:56.997 回答