天道酬勤,学无止境

uiscrollview

XCode:以编程方式启用符号断点?(XCode: Programmatically enable a symbolic breakpoint?)

问题 有没有办法以编程方式启用断点? 通常我会使用断点条件,但我需要使用符号断点。 具体来说,在调用scrollToIndexPath和调用reloadData之间,我的 UIScrollView 的contentOffset有所改变。 我只想在调用scrollToIndexPath之后启用符号断点。 回答1 Jim Ingham 的答案适用于 x86 系统。 对于 iOS 设备,我能够使用此答案中描述的方法以编程方式创建断点。 插入线 asm("svc 0"); 使调试器在 XCode 中的以下指令处停止。 有趣的是,如果您没有连接到 XCode,程序将继续正常执行。 回答2 您可以通过使用 __builtin_trap() 来完成此操作。 在 x86 系统上,您必须在遇到陷阱后手动调整 pc。 但这很容易做到,如果你的代码经常受到攻击并且你只需要在一些复杂的情况下陷入困境,这有时会很有用。 就像是: > lldb trapit (lldb) target create "trapit" Current executable set to 'trapit' (x86_64). (lldb) run Process 63363 launched: '/private/tmp/trapit' (x86_64) About to trap. Process 63363 stopped

2022-01-16 12:51:54    分类:技术分享    ios   xcode   uiscrollview   uikit   lldb

XCode: Programmatically enable a symbolic breakpoint?

Is there a way to programmatically enable a breakpoint? Normally I'd use a breakpoint condition, but I need to use a symbolic breakpoint. Specifically, something is changing the contentOffset of my UIScrollView between a call to scrollToIndexPath and a call to reloadData. I'd like to enable the symbolic breakpoint only after the call to scrollToIndexPath.

2022-01-16 06:55:52    分类:问答    ios   xcode   uiscrollview   uikit   lldb

SwiftUI 中的底部优先滚动(Bottom-first scrolling in SwiftUI)

问题 如何让 SwiftUI List从屏幕底部开始滚动(如聊天视图)? 理想情况下,我想模仿,例如,当列表更新时 iMessage 的行为,这意味着如果在用户位于底部时添加项目,它会向下移动,但如果用户手动向上滚动则保持它的位置。 该列表直接从绑定数组中读取,如果方便,可以颠倒顺序。 @komal 指出UITableView ( List的后端)有一个atScrollPosition应该提供这个功能。 但是,似乎没有办法在不完全将List重新实现为UIViewRepresentable情况下访问底层视图,考虑到标准实现是完全黑盒和闭源的,这说起来容易做UIViewRepresentable 。 话虽如此,我还从 SwiftUI List 发布了 Access 底层 UITableView,如果解决了,可以作为这个问题的答案。 回答1 您可以尝试这种反转ScrollView : struct ContentView: View { let degreesToFlip: Double = 180 var body: some View { ScrollView(.vertical, showsIndicators: false) { ForEach(0..<100) { i in HStack { Spacer() Text("Number: \(i)") Spacer() }

2022-01-16 06:22:40    分类:技术分享    ios   swift   uiscrollview   swiftui   swiftui-list

iPhone UIScrollView / setContentOffset 怪异(iPhone UIScrollView / setContentOffset weirdness)

问题 我对 setContentOffset 有一个奇怪的问题,我似乎无法解决:我正在尝试构建一个“无尽的”滚动视图,所以我想在某个位置重置内容偏移量。 使用下面的代码 setContentOffset 将在 x=160px 处调用。 如果我拖动滚动视图,我的日志如下所示: 偏移量:158 偏移量:159 偏移量:160 偏移量:80 偏移量:160 发生的情况是我的 setContentOffset(到 80)被执行,当我继续拖动 UIScrollView 似乎已经忘记了它并继续在 160 处。更奇怪的是:当我设置动画时:是它工作。 也许是时间问题? 当我从 scrollViewDidScroll 中调用 setContentOffset 时,将再次调用 scrollViewDidScroll。 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSInteger tileNo = floor(scrollView.contentOffset.x / 80); NSLog(@"offset: %f, tile: %d, lastTile: %d", scrollView.contentOffset.x, tileNo, lastTileNo); if (tileNo > lastTileNo) {

2022-01-16 05:11:59    分类:技术分享    iphone   cocoa-touch   uikit   uiscrollview

当用户向下滚动时,材质浮动操作按钮应该不可见,向上滚动时应该可见(Material floating action button should invisible when user scroll down and visible when scrolls up)

问题 我在屏幕右下方有材质浮动操作按钮 (FAB)。 另外,我在 View 中有 CollectionView。 我希望完成以下操作。 当用户向下滚动时 - FAB 应该不可见。 当用户向上滚动时 - FAB 应该可见。 我在谷歌到处搜索。没有一个问题能满足我的要求。 回答1 不要忘记设置 collectionView.delegate = self. extension ViewController: UIScrollViewDelegate{ func scrollViewDidScroll(_ scrollView: UIScrollView) { if scrollView == collectoinView{ button.isHidden = scrollView.contentOffset.y > 50 } } } 50是Y的位置,按钮将从该位置隐藏。 您可以根据您的要求调整到任何数字。 另一种方法 func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) { let targetPoint = targetContentOffset as

2022-01-16 04:22:33    分类:技术分享    ios   swift   uicollectionview   uiscrollview

iPhone UIScrollView / setContentOffset weirdness

I have a weird issue with setContentOffset which I don't seem to be able to solve: I'm trying to build an "endless" scroll view, so I'd like to reset the content offset at a certain position. With the code below setContentOffset will be called at x=160px. If I drag the scroll view my log looks like this: offset: 158 offset: 159 offset: 160 offset: 80 offset: 160 What happens is that my setContentOffset (to 80) is performed, when I keep on dragging UIScrollView seem to have forgotten about it and continues at 160. Even weirder: When I set animated:YES it works. Maybe a timing issue? When I call

2022-01-16 03:41:23    分类:问答    iphone   cocoa-touch   uikit   uiscrollview

左值需要作为赋值的左操作数(Lvalue required as left operand of assignment)

问题 我想将 suitSize 分配给 scrollButton 我做错了什么? UIView *scrollButton = [suitScrollView viewWithTag:1]; CGSize suitSize =CGSizeMake(10.0f,10.0f); (UIButton *)scrollButton.frame.size=suitSize; 回答1 frame 是一个属性,而不是结构字段。 您不能分配给它的子字段。 把它想象成一个函数调用; 属性的点语法很方便。 这: scrollButton.frame.size = suitSize; 相当于: [scrollButton frame].size = suitSize; 哪个不起作用; 分配给函数结果的字段没有任何意义。 相反,请执行以下操作: CGFrame theFrame = [scrollButton frame]; theFrame.size = suitSize; [scrollButton setFrame: theFrame]; 或者,如果您愿意: CGFrame theFrame = scrollButton.frame; theFrame.size = suitSize; scrollButton.frame = theFrame; 请注意,不需要将 scrollButton 转换为

2022-01-16 01:16:53    分类:技术分享    objective-c   ios   tags   uiscrollview   uibutton

如何让 scrollViewDidScrollToTop 在 UITableView 中工作?(How can I get scrollViewDidScrollToTop to work in a UITableView?)

问题 我认为标题说明了一切。 我想在用户滚动到表格视图顶部时收到通知。 我试过以下没有运气,甚至在 .h 文件中添加了一个 UIScrollViewDelegate 。 - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{ NSLog(@"ScrolledToTop"); } 谢谢! 编辑:如果我按下状态栏,我可以让它调用。 但如果我滚动到顶部,则不会。 奇怪......它是否与桌面视图在到达顶部时弹跳有关? 回答1 如果你尝试这个会发生什么? - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView.contentOffset.y == 0) NSLog(@"At the top"); } 回答2 - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == 0 && indexPath.section == 0 ) { NSLog(@"Showing top cell"); } 够近了吗?

2022-01-15 23:05:19    分类:技术分享    iphone   uitableview   uiscrollview

在 uitableview 中禁用反弹也会禁用 iOS 5 上的滚动,但不会禁用 iOS4(Disabling bounces in uitableview also disables scrolling on iOS 5 but not iOS4)

问题 我在导航控制器中有一个带有表格视图的应用程序; 我想禁用弹跳,这样当我的表处于编辑模式时,用户可以向下滚动并找到要删除的行; 否则,它会反弹,并且不会让他们有机会按下行旁边的删除图标。 所以我这样做了: self.tableView.bounces=NO; 当我在 iOS 4 上运行我的应用程序时,这就像一个魅力。 用户可以滚动并且表格不会反弹。 但在 iOS 5 上,滚动也根本不适用于表格。 没有滚动。 所以为了安全起见,我这样做了: self.tableView.bounces=NO; self.tableView.scrollEnabled=YES; 但这并没有什么不同。 我以编程方式创建我的表格视图及其导航控制器; 其他一切都很好。 知道为什么禁用反弹也会阻止在 iOS 5 上滚动吗? 回答1 我在这里找到了解决方案: 编辑视图框架和原点后 UITableView 不会滚动 如果您手动设置 tableview 的来源,在 iOS 5 上它会禁用滚动。 在 iOS 4 上不是。 真可惜。

2022-01-15 22:50:09    分类:技术分享    iphone   objective-c   ipad   uitableview   uiscrollview