我向Apple提交了一个没有任何源代码的二进制文件.
除了手动检查源代码外,Apple如何知道使用了什么以及您调用了哪些API?
问题
如何修改scrollView的滚动目标?我正在寻找一种替代“经典” scrollView委托方法的方法
override func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)
......在这里我们可以modfify目标scrollView.contentOffset通过targetContentOffset.pointee例如创建一个自定义分页行为。
或者换句话说:我确实想在(水平)scrollView中创建分页效果。
我尝试过的就是 是这样的:
ScrollView(.horizontal, showsIndicators: true, content: {
HStack(alignment: VerticalAlignment.top, spacing: 0, content: {
card(title: "1")
card(title: "2")
card(title: "3")
card(title: "4")
})
})
// 3.
.content.offset(x: self.dragState.isDragging == true ? self.originalOffset : self.modifiedOffset, y: 0)
// 4.
.animation(self.dragState.isDragging == true ? nil : Animation.spring())
// 5.
.gesture(horizontalDragGest)
Run Code Online (Sandbox Code Playgroud)
尝试
这是我尝试过的方法(除了自定义的scrollView方法):
scrollView的内容区域大于屏幕空间,因此根本无法滚动。
我创建了一个,DragGesture()以检测是否有阻力在继续。在.onChanged和.onEnded闭包中,我修改了@State值以创建所需的scrollTarget。
有条件地将原始未更改的值和新修改的值都馈送到.content.offset(x:y :)修饰符中-取决于dragState作为缺少的scrollDelegate方法的替代。
仅在拖动结束时才有条件地添加动画。
将手势附加到scrollView。
长话短说。没用 我希望我能解决我的问题。
有什么解决办法吗?期待任何投入。谢谢!
我将 TabView 与 PageTabViewStyle 一起使用,每个子视图都包含一个带有大数据集的列表视图。
仅在 iOS 14.2 上,页面转换似乎非常滞后。
但是,在具有少量数据的列表视图中,页面转换不会延迟。
我猜测 TabView 包含列表的性能将与数据量无关,因为列表行显示是惰性的。
所以,我相信这是错误或默认视图样式更改。
我期待着您的帮助来解决这个问题。谢谢
@available(iOS 14.0, *)
struct ContentView: View {
@State var showHeart: Bool = false
var body: some View {
TabView{
self.contents
self.contents
}
.tabViewStyle(PageTabViewStyle())
}
var contents: some View{
List(0..<1000){_ in
Text("HELLO WORLD HELLOWORLD")
}
}
}
Run Code Online (Sandbox Code Playgroud) 我通过线程在 SwiftUI 中成功实现了 PageView:
如何在 SwiftUI 中实现 PageView?
只要所有视图都具有相同的结构,通过数组传递多个视图就像一个魅力。
PageView([TestView(), TestView()]).
但是,我想传递不同的观点。
PageView([TestView(), AnotherView(), DifferentView()]).
所有视图都是 SwiftUI 类型:
struct NAME : View { code }
当我尝试向数组添加不同的结构时,我收到以下错误消息:
var pageViewViewArray = [TestView(), AnotherView(), DifferentView()]
Run Code Online (Sandbox Code Playgroud)
异构集合字面量只能推断为“[Any]”;如果这是有意的,请添加显式类型注释。
插入'为[任何]
通过将其转换为:
var pageViewViewArray = [TestView(), AnotherView(), DifferentView()] as! [Any]
PageView(pageViewViewArray)
Run Code Online (Sandbox Code Playgroud)
PageView 会说:
协议类型“Any”不能符合“View”,因为只有具体类型才能符合协议
我将不胜感激任何想法。
背景:我正在将一个项目从 UIKit 转换为 SwiftUI。目前使用 UIKit,我在 UICollectionView 中有一个 UICollectionView,两者都启用了分页。这允许用户在单元格上向上/向下和向左/向右滑动。每个单元格都会填充整个屏幕(类似于 TikTok 的主 UI),并且每个单元格都有大量要从 Firebase 中提取的数据,因此我不想在第一个视图出现时加载所有项目,而是在每个单元格出现时加载所有项目(这是 UIKit 下通过 UICollectionView 委托的当前实现)。
问题:我找不到在 SwiftUI 中启用此“分页”(基于用户滑动)的方法。很难想象苹果制作的这个新框架没有 Paging 功能?如果他们没有包含此内容,是否有解决方法?否则,是否有一种简单的方法将 UICollectionView 包含到 SwiftUIView 中?
任何帮助或解决方法都会很好!谢谢 :)
我正在尝试制作一个双向 TabView (带有.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))),其数据源会随着时间的推移而改变。
下面的代码描述了预期的结果:
class TabsViewModel: ObservableObject {
@Published var items = [-2, -1, 0, 1, 2]
@Published var selectedItem = 2 {
didSet {
if let index = items.firstIndex(of: selectedItem), index >= items.count - 2 {
items = items + [items.last! + 1]
items.removeFirst()
}
if let index = items.firstIndex(of: selectedItem), index <= 1 {
items = [items.first! - 1] + items
items.removeLast()
}
}
}
}
struct TabsView: View {
@StateObject var vm = TabsViewModel() …Run Code Online (Sandbox Code Playgroud) 我目前正在观看WWDC 2019的SwiftUI Essentials视频,演示者为VStack提取了实际的API,(至少对我而言,这令人难以置信)详细说明了此特定结构的实际工作方式。
开发人员是否可以找到有关Apple提供的特定功能的此类详细,深入的文档?
马特·史蒂文斯(Matt Stevens)拥有一个很棒的APIdiff(http://codeworkshop.net/objc-diff/sdkdiffs/)网站,但该网站均链接回Apple的标准开发人员文档页面。
演示者提供的示例代码:
public struct VStack<Content : View> : View {
public init(
alignment: HorizontalAlignment = .center,
spacing: Length? = nil,
@ViewBuilder content: () -> Content
)
}
Run Code Online (Sandbox Code Playgroud)
实际提供的文档代码:
struct VStack<Content> where Content : View
Run Code Online (Sandbox Code Playgroud)
上面关于对齐默认值的细节以及单独的间距长度虽然非常简单,但已经作为跨站点的单独SO问题被问及关于默认行为是什么以及为什么是默认行为的问题。
我想我要问的是,例如,对于UIKit中当前的,更完善的类,是否有办法查看类本身的实际实现细节,例如在此SwiftDC VStack的WWDC中显示的?我不确定这是苹果公司从未提供过的信息,还是人们随着时间的推移而学到的信息(这种行为以某种方式“只是因为”并且我们从经验中知道),或者这仅仅是事实, SwiftUI是新功能,Apple还没来得及巩固SwiftUI和文档。
抱歉,是否有人问过这个问题,或者这是一个非常明显的问题,总体而言,我还是一个新手。
谢谢!
swiftui ×6
swift ×5
ios ×3
ios13 ×1
iphone ×1
listview ×1
objective-c ×1
pageviews ×1
performance ×1
scrollview ×1
tabview ×1
uiview ×1
xcode ×1