2

新しいツイートのダイアログを表示したときに Twitter が行うのと同様の効果を達成しようとしています。それらはビューを上からドロップダウンし、他のビューを縮小しますが、キーボードを閉じると、それらすべてを操作できます. これは明らかにモーダル ビューではありませんが、これと似たようなことを行うための出発点が何であるかはわかりません。

ビューが表示されます

他のビューとの対話

4

1 に答える 1

1

これは、ビュー階層として単純明快に見えますが、巧妙にアートで飾られています。下は通常のインターフェイスで、上はUITextViewを含むビューで、その周りに素敵なメモ帳アートがあります。

これを実現する 1 つの方法は、View Controller のメイン ビューの下に 2 つのサブビューをハングアップすることです。最初の子には、メモ帳アートとテキスト ビューが含まれています。0、-NOTEPAD_HEIGHT に配置されています。2 番目の子は 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));
    }];
}

再び隠したいときはいつでも ...Hidden:YES で呼び出します。2 番目の子のサブビューに自動サイズ変更動作が設定されていることを確認して、親が縮小したときに正しいことを行うようにします。

このようなものが必要になることもよくあります...

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

うまくいけば、それは良いスタートです。

于 2012-05-03T05:24:56.997 に答える