gpt4 book ai didi

ios - 当 TouchMoved 函数上的 x 坐标发生变化时,动态更改 UICollection View 的宽度

转载 作者:行者123 更新时间:2023-11-30 12:23:50 25 4
gpt4 key购买 nike

大家。我正在快速制作一个滑出菜单。我已经让一切工作正常了。滑出菜单显示何时单击汉堡包按钮以及何时完成屏幕上的右滑动。现在我想根据屏幕上的用户坐标更改滑出菜单的大小(宽度)。

滑出是使用 UIView 顶部的 Collection View 实现的。

为了从屏幕上获取用户的位置,我使用 touchMoved 函数来获取用户的实时 x 值。是否有任何方法可以使用此值以便更改 Collection View 的宽度。

Screen shot

任何帮助都会非常有帮助。如果需要我可以上传所有代码。更改 anchor 大小也没有帮助。

MoreOptionsViewController.swift

    override init() {
super.init();

collectionView.delegate = self;
collectionView.dataSource = self;
collectionView.register(MoreOptionsCell.self, forCellWithReuseIdentifier: cellId);

getData();
}

func showMoreOptions(){
if let window = UIApplication.shared.keyWindow{
window.addSubview(view);

view.setAnchor(top: window.topAnchor, bottom: window.bottomAnchor, left: window.leftAnchor, right: window.rightAnchor);
view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTapOutside)));
view.alpha = 0.5;
collectionView.alpha = 1;

window.addSubview(collectionView);

let width = window.frame.width * 0.9;

//Animate the collection view's width
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.collectionView.leftAnchor.constraint(equalTo: window.leftAnchor).isActive = true;
self.collectionView.topAnchor.constraint(equalTo: window.topAnchor).isActive = true;

self.collectionView.widthAnchor.constraint(equalToConstant: width).isActive = true;
self.collectionView.heightAnchor.constraint(equalTo: window.heightAnchor).isActive = true;
}, completion: nil)

}
}

func handleTapOutside(){
collectionView.removeFromSuperview();
view.removeFromSuperview();
}

let view: UIView = {
let view = UIView();
view.backgroundColor = UIColor.black;
view.translatesAutoresizingMaskIntoConstraints = false;
return view;
}();

let collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout();
layout.minimumLineSpacing = 0;
let cv = UICollectionView(frame: .zero, collectionViewLayout: layout);
cv.showsVerticalScrollIndicator = false;
cv.backgroundColor = UIColor(red: 59/255, green: 65/255, blue: 65/255, alpha: 0.9);
cv.translatesAutoresizingMaskIntoConstraints = false;
return cv;
}();

上面的代码包含实际的 Collection View 来呈现滑出菜单。

如果我尝试更改 touchMoved 函数的宽度,则会出现很多错误。任何帮助都感激不尽。

最佳答案

尝试通过在 touchMoved 函数中更新其框架来设置 Collection View 的宽度

yourCollectionView.frame = CGRect(x: 0, y: 0, width: <user's_x_scroll_value>, height: height)

关于ios - 当 TouchMoved 函数上的 x 坐标发生变化时,动态更改 UICollection View 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44460197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com