これを探している人はもっといると思いますが、どこにも見つかりません。
私が望むのは、UIStackView を含むスクロールビューがビューの上部を超えてスクロールされたら、UIStackView の 1 つ以上のサブビューをフロートにすることです。動作は、テーブルビュー ヘッダーに似ている必要があります。
これを探している人はもっといると思いますが、どこにも見つかりません。
私が望むのは、UIStackView を含むスクロールビューがビューの上部を超えてスクロールされたら、UIStackView の 1 つ以上のサブビューをフロートにすることです。動作は、テーブルビュー ヘッダーに似ている必要があります。
最初に思ったことをお話しします。
UIScrollViewDelegate
このようなデリゲートを使用してスクロールを検出してみてください
func scrollViewDidScroll(scrollView: UIScrollView) {
}
次のように、スクロール ビューの現在の Y を確認します。
scrollView.contentOffset.y
条件を作成し、true の場合は UIStackView の位置を変更します。
しかし、私はそのような解決策をお勧めしません。UI のベスト プラクティスを確認し、テーブル ビューのヘッダーに固執することをお勧めします。
@Rebel Designer、ScrollableStackViewライブラリを聞いたことがありますか? これがgithubページです:
https://github.com/gurhub/ScrollableStackView
そしてあなたのためのいくつかのサンプルコード:
迅速
import ScrollableStackView
var scrollable = ScrollableStackView(frame: view.frame)
view.addSubview(scrollable)
// add your views with
let rectangle = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 55))
rectangle.backgroundColor = UIColor.blue
scrollable.stackView.addArrangedSubview(rectangle)
// ...
Objective-C
@import ScrollableStackView
ScrollableStackView *scrollable = [[ScrollableStackView alloc] initWithFrame:self.view.frame];
scrollable.stackView.distribution = UIStackViewDistributionFillProportionally;
scrollable.stackView.alignment = UIStackViewAlignmentCenter;
scrollable.stackView.axis = UILayoutConstraintAxisVertical;
[self.view addSubview:scrollable];
UIView *rectangle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 55)];
[rectangle setBackgroundColor:[UIColor blueColor]];
// add your views with
[scrollable.stackView addArrangedSubview:rectangle];
// ...
それが役に立てば幸い。