我有一个关于启用分页的 UIScrollView 的问题,其中包含许多 UIView,每个 UIView 由自己的 UIViewController 管理。
现在大约有 20 到 30 个 UIViewControllers 可以包含在 UIScrollView 中。它是 iPad 上的目录应用程序,一开始我就开始预加载所有视图,但是随着 UIViewControllers 的数量越来越大,这不再是一种选择。
我正在寻找内存使用方面的完美解决方案。当 ScrollView 的 ContentOffset 到达特定控制器时,重新加载 UIViewControllers 没有问题。而且我认为当 ContentOffset 告诉我不再需要 UIViewControllers 时,将 UIViewControllers 置零也不是那么难。
处理这个问题的正确方法是什么?在需要时分配 UIViewControllers 是否足够,将它们放入 NSMutableDictionary 或 NSMutableArray 并在不再需要它们时将它们归零?已经做过类似事情的人的一点帮助会很棒!
谢谢你的帮助!
我试图从左到右自动滚动,但我还没有成功。我正在评估以下表达式以改变方向(添加或减去像素)但是当滚动到达最终它被阻止...
(xContentSize - xOffset) >= CGRectGetWidth(_scroll.bounds)
Run Code Online (Sandbox Code Playgroud)
或者
(xContentSize - xOffset) > CGRectGetWidth(_scroll.bounds)
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我创建了一个自定义滚动视图类,它使用两个子视图,可以滚动(启用分页)以在屏幕上显示当前视图。
我想要做的是更改它,以便第二个视图仅在点击特定按钮时滚动。因此,不应允许用户使用拖动手势在第二个视图中滚动。
如何暂时禁用滚动视图上的拖动手势?(暂时是因为当第二个视图被滚动时,它应该被重新激活,以便用户可以将该视图拖出屏幕)。
感谢您的任何提示!
我需要使花朵图像翻转。图像必须具有相同的高度,但宽度要自动设置。我希望他们左右滚动这是我的代码:
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) 我正在尝试使我的应用程序中的视图可滚动。
O 完全按照教程https://www.youtube.com/watch?v=UnQsFlMGDsI 中的步骤操作。
我做的主要步骤是:
当我运行应用程序时,滚动视图不起作用
我真的无法让它发挥作用。我尝试了很多方法来应用 UIScrollView 并没有得到它。
我有以下代码,允许用户通过按下按钮在屏幕上旋转图像。
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) 我有一个 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
我遇到问题设计我的ViewController,其中包含一些Label和一个ImageView.我已将它们嵌入到StackView中.我的目标是在ScrollView中放置一个StackView,这样如果内容比屏幕高度更长,我的内容就可以滚动
基本上我所做的就是
1 - 将UIScrollView放置在场景中.将滚动视图固定到没有边距的超级视图.
2 - 在滚动视图中放置UIStackView.将堆栈视图的所有边都固定到没有边距的滚动视图(是的,这是违反直觉的).
3 - 垂直滚动:在滚动视图和堆栈视图之间添加相等的宽度约束
这是我在故事板中的设置
但我得到了这个红色警告限制.有人知道怎么修这个东西吗?Maythanks
我CollectionView和TableView一个控制器.我已经制作了一个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) 我有一个水平分页UIScrollview,以下是我的VFL前导/尾随约束H:|-0-[ScrollView]-0-|(与superview对齐).
我safeAreaInsets在iPhone X中左/右横向.
这是一个错误吗?或者我错过任何Apple方式,当我们不需要时,这些插入不会被应用?
ios ×10
uiscrollview ×10
swift ×4
autolayout ×2
objective-c ×2
gesture ×1
ios11 ×1
iphone-x ×1
reverse ×1
rotation ×1
storyboard ×1
uiimageview ×1
uistackview ×1
uitableview ×1
uiview ×1
xcode6 ×1