gpt4 book ai didi

在 NavigationController 中查看的 iOS 无效矩形

转载 作者:行者123 更新时间:2023-11-28 15:23:00 25 4
gpt4 key购买 nike

我正在我的简单 iOS 应用程序中实现 pick-pop 功能。我的 MainViewController 中有一个 CustomView,它又包含在 NavigationController 中。这个自定义 View 有一个 CollectionView,我想在它的项目上实现 pick-pop现在,当我选择并弹出一个项目时,矩形预览放错了位置(见图片)

my view misplaced pick and pop这里还有一些看起来与 pick-pop 功能无关的问题

首先,如果我在我的 customView 中调用 self.frame.origin.xself.frame.origin.y,结果是 00 这很尴尬,因为它在 navigationController 中

第二个location参数传入

func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? 

也错位了。(偏移正好等于我的customView的navigationBar高度和左边距)

我将 MainController 传递给了我的 CustomView,我的 customView 是这样的:

class CategoryView: UIView, UICollectionViewDataSource, UICollectionViewDelegate , MFMailComposeViewControllerDelegate , UIViewControllerPreviewingDelegate{

@IBOutlet var contentView: UIView!
@IBOutlet weak var categoryGrid: UICollectionView!

var callback:((Category)->Void)?;
var category:Category?;
var controller:UIViewController?{
didSet{
if(controller?.traitCollection.forceTouchCapability == .available){
controller?.registerForPreviewing(with: self, sourceView: (controller?.view)!)
}
}
};
....
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {

guard let indexPath = categoryGrid?.indexPathForItem(at: location) else {
return nil
}

if let cell = categoryGrid?.cellForItem(at: indexPath) as? CategoryViewCell {

if let ret = getNextView(to: cell.category!){
ret.preferredContentSize = CGSize(width: 0.0, height: 0.0)
print(self);
print(self.frame);
previewingContext.sourceRect = cell.frame;
return ret;
}
return nil;
}
UIView.setAnimationsEnabled(true);
return nil
}


}

谁能告诉我哪里出了问题?

最佳答案

您应该将单元格边界转换为 sourceView 的坐标,例如。例如:

previewingContext.sourceRect = 
previewingContext.sourceView.convert(cell.bounds, from: cell)

您不应该依赖单元格的框架。将坐标从一个 View 转换为另一个 View 是一种更简洁的方法。

关于在 NavigationController 中查看的 iOS 无效矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45675165/

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