标签: uiscrollview

iOS:具有许多 UIViewController 的 UIScrollView 中的内存管理

我有一个关于启用分页的 UIScrollView 的问题,其中包含许多 UIView,每个 UIView 由自己的 UIViewController 管理。

现在大约有 20 到 30 个 UIViewControllers 可以包含在 UIScrollView 中。它是 iPad 上的目录应用程序,一开始我就开始预加载所有视图,但是随着 UIViewControllers 的数量越来越大,这不再是一种选择。

我正在寻找内存使用方面的完美解决方案。当 ScrollView 的 ContentOffset 到达特定控制器时,重新加载 UIViewControllers 没有问题。而且我认为当 ContentOffset 告诉我不再需要 UIViewControllers 时,将 UIViewControllers 置零也不是那么难。

处理这个问题的正确方法是什么?在需要时分配 UIViewControllers 是否足够,将它们放入 NSMutableDictionary 或 NSMutableArray 并在不再需要它们时将它们归零?已经做过类似事情的人的一点帮助会很棒!

谢谢你的帮助!

uiscrollview uiviewcontroller ios

1
推荐指数
1
解决办法
2406
查看次数

以编程方式从左到右反向滚动 UIScrollView

我试图从左到右自动滚动,但我还没有成功。我正在评估以下表达式以改变方向(添加或减去像素)但是当滚动到达最终它被阻止...

(xContentSize - xOffset) >= CGRectGetWidth(_scroll.bounds)
Run Code Online (Sandbox Code Playgroud)

或者

(xContentSize - xOffset) > CGRectGetWidth(_scroll.bounds)
Run Code Online (Sandbox Code Playgroud)

任何的想法?

reverse uiscrollview right-to-left ios

1
推荐指数
1
解决办法
8565
查看次数

禁用 UIScrollView 手势

我创建了一个自定义滚动视图类,它使用两个子视图,可以滚动(启用分页)以在屏幕上显示当前视图。

我想要做的是更改它,以便第二个视图仅在点击特定按钮时滚动。因此,不应允许用户使用拖动手势在第二个视图中滚动。

如何暂时禁用滚动视图上的拖动手势?(暂时是因为当第二个视图被滚动时,它应该被重新激活,以便用户可以将该视图拖出屏幕)。

感谢您的任何提示!

objective-c uiscrollview gesture ios swift

1
推荐指数
1
解决办法
2684
查看次数

Swift UIScrollView - 奇怪的填充

我需要使花朵图像翻转。图像必须具有相同的高度,但宽度要自动设置。我希望他们左右滚动这是我的代码:

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

    @IBOutlet weak var scrollView: UIScrollView!

    var images = [UIImage]()

    override func viewDidLoad() {
        super.viewDidLoad()


        scrollView.delegate = self

        for i in 1...3 {
            images.append(UIImage(named: "bild-0\(i).jpg")!)
        }
        var i: CGFloat = 0
        var origin: CGFloat = 0
        let height: CGFloat = scrollView.bounds.height

        for image in images {
            let imageView = UIImageView(frame: CGRectZero)
            imageView.frame.size.height = height
            imageView.image = image
            imageView.sizeToFit()
            imageView.frame.origin.x = origin
            println(imageView.frame.size.width)
            println(imageView.frame.origin.x)
            println(imageView.frame.size.height)
            println("asd")
            origin = origin + imageView.frame.size.width
            i++
            scrollView.addSubview(imageView)
        } …
Run Code Online (Sandbox Code Playgroud)

uiscrollview ios swift

1
推荐指数
1
解决办法
2177
查看次数

UIScrollView 和自动布局不起作用

我正在尝试使我的应用程序中的视图可滚动。

O 完全按照教程https://www.youtube.com/watch?v=UnQsFlMGDsI 中的步骤操作。

我做的主要步骤是:

  • 添加一个 UIscrollView
  • 将视图添加到 UIscrollView(内容视图)
  • 为 UIScrollView 创建值为 0(顶部、左侧、右侧和底部)的边距约束
  • 为内容视图创建值为 0(顶部、左侧、右侧和底部)的边距约束
  • 在 ContentView 和主视图之间创建 2 个“等宽”和“等高”约束
  • ...(添加一些文本字段)

当我运行应用程序时,滚动视图不起作用

在此处输入图片说明

我真的无法让它发挥作用。我尝试了很多方法来应用 UIScrollView 并没有得到它。

storyboard uiscrollview ios autolayout xcode6

1
推荐指数
1
解决办法
2042
查看次数

UIScrollView 缩放从 UIImageView 移除变换

我有以下代码,允许用户通过按下按钮在屏幕上旋转图像。

self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, rotationAmount);
Run Code Online (Sandbox Code Playgroud)

此图像位于 UIScrollView 内,使用户可以放大照片。问题是当用户缩放时,变换会被重置。我可以存储变换的值,然后在缩放后重新应用它,但图像看起来好像在旋转版本和非旋转版本之间弹跳。

有没有办法在缩放过程中保持变换?

这是滚动视图的代码

self.scrollView.minimumZoomScale=1.0;
self.scrollView.maximumZoomScale=6.0;
self.scrollView.contentSize=CGSizeMake(screenHeight, screenWidth-toolBarHeight);
self.scrollView.delegate=self;
[_scrollView setContentMode:UIViewContentModeScaleAspectFit];
[_scrollView sizeToFit];
[_scrollView setContentSize:CGSizeMake(_imageView.frame.size.width, _imageView.frame.size.height)];
Run Code Online (Sandbox Code Playgroud)

objective-c rotation uiscrollview uiimageview ios

1
推荐指数
1
解决办法
758
查看次数

在顶部滚动带有 UIViews 的集合视图?

我有一个 UICollectionViewController 并且我添加了两个 UIView 作为子视图。一个是紫色的 UIView,上面是另一个白色的 UIView,蓝色的集合视图在两者后面向上滚动。

在这些 UIViews 下方,我collectionView.contentInset从前 300 个(这是两个 UIViews 高度的总大小)制作了。我想要完成的是滚动集合视图以及上面的两个 UIView。它几乎类似于此线程上的解决方案(在 UITableView 中滚动时移动视图),除了当我覆盖 scrollViewDidScroll 时,整个框架会向上滚动并且单元格位于两个视图后面。我想要的只是向上滚动 UIViews,然后滚动浏览集合视图。我觉得这可能涉及嵌套滚动视图。

在此处输入图片说明

这就是我如何覆盖 scrollViewDidScroll:

    var rect = self.view.frame
    rect.origin.y =  -scrollView.contentOffset.y - 300
    self.view.frame = rect
Run Code Online (Sandbox Code Playgroud)

编辑:我发布了一个视频,演示了我想在每个 iOS Tumblr 应用程序中执行的操作:https : //youtu.be/elfxtzoiHQo

uiscrollview uiview ios uicollectionview swift

1
推荐指数
1
解决办法
5139
查看次数

UIStoryBoard Auto Layout在UIScrollView中嵌入了UIStackView

我遇到问题设计我的ViewController,其中包含一些Label和一个ImageView.我已将它们嵌入到StackView中.我的目标是在ScrollView中放置一个StackView,这样如果内容比屏幕高度更长,我的内容就可以滚动

基本上我所做的就是

1 - 将UIScrollView放置在场景中.将滚动视图固定到没有边距的超级视图.

2 - 在滚动视图中放置UIStackView.将堆栈视图的所有边都固定到没有边距的滚动视图(是的,这是违反直觉的).

3 - 垂直滚动:在滚动视图和堆栈视图之间添加相等的宽度约束

这是我在故事板中的设置

在此输入图像描述

但我得到了这个红色警告限制.有人知道怎么修这个东西吗?Maythanks

在此输入图像描述

uiscrollview ios autolayout uistackview

1
推荐指数
1
解决办法
1018
查看次数

检测同一控制器中的TableView和CollectionView滚动

CollectionViewTableView一个控制器.我已经制作了一个segment controlby CollectionView和实现scrollView 委托,controller如下所示: -

class MyViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UICollectionViewDelegate,UICollectionViewDataSource,UIScrollViewDelegate,UICollectionViewDelegateFlowLayout
Run Code Online (Sandbox Code Playgroud)

我有工具scrollViewDidEndDecelerating,现在我想检测哪个组件滚动(tableView或collectionView)

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
    {
         //here i want to detect which component scrolling(tableView or collectionView)

        if scrollView.contentOffset.x == 0
        {
            segmentControl.selectedSegmentIndex = 0
            DispatchQueue.main.async{
                self.colView.reloadData()
            }
        }
        else if scrollView.contentOffset.x == view.frame.size.width
        {
            DispatchQueue.main.async{
                self.colView.reloadData()
            }
            segmentControl.selectedSegmentIndex = 1
        }
        DispatchQueue.main.async{

                let segAttributes: NSDictionary = [
                    NSForegroundColorAttributeName: UIColor.white,
                    NSFontAttributeName: UIFont.systemFont(ofSize: 12)
                ]
                let segAttributes1: NSDictionary = [
                    NSForegroundColorAttributeName: …
Run Code Online (Sandbox Code Playgroud)

uitableview uiscrollview ios uicollectionview swift

1
推荐指数
1
解决办法
5834
查看次数

如何在UIScrollview(iOS 11,iPhoneX)上摆脱safeAreaInsets

我有一个水平分页UIScrollview,以下是我的VFL前导/尾随约束H:|-0-[ScrollView]-0-|(与superview对齐).

safeAreaInsets在iPhone X中左/右横向.

这是一个错误吗?或者我错过任何Apple方式,当我们不需要时,这些插入不会被应用?

uiscrollview ios ios11 iphone-x

1
推荐指数
1
解决办法
1254
查看次数