制作视图看起来像Twitter应用程序与新推特(iPad)

时间:2012-05-02 22:35:19

标签: iphone objective-c ios ipad

我正在尝试实现类似于twitter在您启动新推文对话时所做的效果。他们从顶部下拉视图,缩小其他视图但仍允许您在解除键盘时与所有视图进行交互。它显然不是一种模态视图,但我不能指出与此类似的起点是什么。

View appears

Interacting with the other views still

1 个答案:

答案 0 :(得分:1)

它看起来像一个视图层次结构,只是巧妙地穿着艺术。底部是常规界面,上面是一个包含UITextView的视图,周围有一些不错的记事本艺术。

实现此目的的一种方法是在视图控制器的主视图下挂起两个子视图。第一个孩子包含记事本艺术和文本视图。它位于0,-NOTEPAD_HEIGHT。第二个子节点位于0,0并占据整个父视图的边界。

撰写按钮告诉文本视图成为第一响应者,并在编辑开始时......

- (void)textViewDidBeginEditing:(UITextView *)textView {
    [self setNotepadHidden:NO animated:YES];
}

我经常制作以下形式的show / hide方法来重新安排这样的事情......

- (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));
    }];
}

使用...隐藏:只要您想再次隐藏它,就可以使用。确保第二个孩子的子视图具有自动调整行为设置,以便他们在父母缩小时做正确的事。

我经常发现这样的需要,也是......

- (BOOL)isNotepadHidden {
    return self.firstChild.frame.origin.y < 0.0;
}

希望这是一个好的开始。