jjzjj

IOS UIPageViewController - 仅滑动屏幕的一部分

coder 2023-09-08 原文

我正在尝试设计一个包含滑动部分的屏幕。我有一个屏幕和一个 ImageView ,底部有两个按钮。我只想滑动 ImageView 而不是底部区域。画面是这样的

目前的问题是滑动整个屏幕,包括按钮。

这是我的代码

ViewController.swift

import UIKit

class ViewController: UIViewController, UIPageViewControllerDataSource {

    var pageImages:NSArray!
    var pageViewController:UIPageViewController!

    override func viewDidLoad() {
        super.viewDidLoad()

        pageImages = NSArray(objects: "startscreen1","startscreen2","startscreen3")


        self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("MyPageViewController") as! UIPageViewController

        self.pageViewController.dataSource = self

        let initialContenViewController = self.pageTutorialAtIndex(0) as TutorialScreenViewController

        let viewControllers = NSArray(object: initialContenViewController)

        self.pageViewController.setViewControllers(viewControllers as! [UIViewController], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)





       /* self.pageViewController.setViewControllers(viewControllers as [AnyObject], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)*/

        self.pageViewController.view.frame = CGRectMake(0, 100, self.view.frame.size.width, self.view.frame.size.height-100)

        self.addChildViewController(self.pageViewController)
        self.view.addSubview(self.pageViewController.view)
        self.pageViewController.didMoveToParentViewController(self)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func pageTutorialAtIndex(index: Int) -> TutorialScreenViewController
    {

        let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("TutorialScreenViewController") as! TutorialScreenViewController

        pageContentViewController.imageFileName = pageImages[index] as! String
        pageContentViewController.pageIndex = index


        return pageContentViewController

    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?
    {

        let viewController = viewController as! TutorialScreenViewController
        var index = viewController.pageIndex as Int

        if(index == 0 || index == NSNotFound)
        {
            return nil
        }

        index--

        return self.pageTutorialAtIndex(index)

    }

     func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController?

     {
        let viewController = viewController as! TutorialScreenViewController
        var index = viewController.pageIndex as Int

        if((index == NSNotFound))
        {
            return nil
        }

        index++

        if(index == pageImages.count)
        {
            return nil
        }

        return self.pageTutorialAtIndex(index)
    }



    func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int

    {

    return pageImages.count
    }

    func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int // The selected item reflected in the page indicator.

    {
    return 0

    }


}

TutorialScreenViewController.swift

@IBOutlet weak var myImageView: UIImageView!
    var imageFileName: String!
    var pageIndex:Int!
    var width:CGFloat!

    @IBOutlet weak var loginButton: UIButton!

    @IBOutlet weak var registerButton: UIButton!

      override func viewDidLoad() {
        super.viewDidLoad()

       myImageView.image = UIImage(named:imageFileName)

            }

最佳答案

您可以使用 View Controller 包含:

  1. 创建一个具有两个按钮和“容器” View 的标准 View Controller 。只需在界面生成器右侧面板的对象库中搜索“容器”,然后将其拖到主视图 Controller 的场景中:

    显然,设置您的约束,以便使用按钮正确布置此容器 View 。

  2. 现在 control- 从容器 View 拖动到页面 View Controller ,然后选择“嵌入”segue。

你最终会得到一个看起来像这样的场景:

现在您可以在带有其他按钮的标准 View Controller 中使用页面 View Controller 功能。

关于IOS UIPageViewController - 仅滑动屏幕的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34138682/

有关IOS UIPageViewController - 仅滑动屏幕的一部分的更多相关文章

  1. 屏幕录制为什么没声音?检查这2项,轻松解决 - 2

    相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声

  2. ruby - 如何使用部分字符串搜索数组并返回索引? - 2

    我想使用部分字符串搜索数组,然后获取找到该字符串的索引。例如:a=["Thisisline1","Wehaveline2here","andfinallyline3","potato"]a.index("potato")#thisreturns3a.index("Wehave")#thisreturnsnil使用a.grep将返回完整的字符串,使用a.any?将返回正确的true/false语句,但都不会返回匹配的索引找到了,或者至少我不知道该怎么做。我正在编写一段代码,该代码读取文件、查找特定header,然后返回该header的索引,以便它可以将其用作future搜索的偏移量。如果

  3. arrays - 字符串数组中字符串第一部分的总和 - 2

    我有一个字符串数组,我需要从中提取第一个单词,将它们转换为整数并获得它们的总和。示例:["5Apple","5Orange","15Grapes"]预期输出=>25我的尝试:["5","5","15"].map(&:to_i).sum 最佳答案 我从你的问题中找到了答案。["5Apple","5Orange","15Grapes"].map(&:to_i).sum在数组中,如果存在任何整数可转换值,那么它将自动转换为整数。 关于arrays-字符串数组中字符串第一部分的总和,我们在Sta

  4. ruby-on-rails - 如何将数据传递给部分? - 2

    K伙计们,所以我创建了这个赞成/反对的投票脚本(基本上就像stackoverflow上的那个),我试图向其中添加一些Ajax,这样页面就不会在您每次投票时都重新加载。我有两个Controller,一个叫grinder,一个叫votes。(磨床基本都是帖子)所以这是所有研磨机的索引(看起来像这样)这是该页面的代码。Listinggrinders"grinders/grinders")%>这就是我在views/grinders/_grinders.erb中的内容true)do|u|%>grinder.id%>"up"%>'create')%>true)do|d|%>grinder.id%>

  5. ruby-on-rails - 将 restclient 与多部分帖子一起使用 - 2

    我将restclient用于多部分表单,以将数据发送到restfulweb服务(它是Panda视频编码服务)。不过,诀窍在于我传递给restclient(Technoweenie分支)的文件来自用户提交的我自己的表单。那么,让我们来看看这个。用户将文件发布到我的Rails应用程序。在我的Controller中,它从params[:file]接收文件。然后我想使用RestClient将params[:file]传递给Panda。我在Panda服务器上遇到的错误如下。我注意到堆栈跟踪中的文件参数也在一个字符串中(我假设Panda将其转换为字符串以获得更好的堆栈跟踪)。~Startedreq

  6. ruby-on-rails - 独立测试 Rails 部分 View - 2

    我在标准rails2.1项目中使用Test/Unit。我希望能够独立于任何特定的Controller/操作来测试分部View。好像ZenTest'sTest::Rails::ViewTestCase会有所帮助,但我无法让它工作,与view_testhttp://www.continuousthinking.com/tags/view_test类似Google出现的大部分内容似乎都已经过时了,所以我猜它并不真正适用于Rails2.1非常感谢任何帮助。谢谢,罗兰 最佳答案 我们正在使用RSpec在我们的Rails2.1项目中,我们可以做

  7. ruby - 如何在 ruby​​ 中实现 curry(部分函数) - 2

    我需要一些在ruby​​(1.8.6或1.8.7而不是1.9)中实现curry函数的示例。 最佳答案 下面是如何用block而不是方法来柯里化(Currying):defcurry(&block)arity=(block.arity>=0)?block.arity:-(block.arity+1)#returnanimmediatevalueiftheblockhasonereturnblock[]ifarity==0#otherwise,curryitargumentbyargumentargs=[]innermost=lambd

  8. ruby-on-rails - Rails 4 通过渲染部分传递多个变量 - 2

    这个问题已经被问过很多次了,但我无法让它工作。我想像这样将多个变量传递给我的部分...这是部分material_fields.html.erb中的一行,我希望f.select预先填充Yes选项或“true”值。(有些情况下我希望它是假的)f可用并且有效,而feed不可用......我不知道为什么这不起作用。我在select语句之外尝试了,但它仍然不起作用。在这两种情况下,我都得到未定义的局部变量或方法“feed”。有人知道我的语法有什么问题吗? 最佳答案 我想通了是什么问题。我有后来我在同一个View中显然,当从一个文件渲染相同的部

  9. ruby-on-rails - 是否可以在部分中只放置一个 rails 表单元素? - 2

    我的应用有一个选择框供用户选择“地点”。如您所料,此选择框位于一个表单中。我还在页面上的某处执行了一个操作,该操作通过AJAX创建了一个新场所。创建新field后,我想更新field选择框以反射(reflect)这一点。我的解决方案是将选择框放在局部中,并从Controller中的创建操作中呈现局部。'venue/venue_select_box'%>局部看起来像这样:'Selectavenue'%>其中f是表单引用:问题是f在部分中未定义,所以我得到一个错误。一种解决方案是包括整个表格,但我觉得没有必要这样做,因为我没有更新整个表格。关于如何解决这个问题有什么想法吗?

  10. ruby-on-rails - 在这部分代码中设置 klass = self 的动机是什么 - 2

    我正在查看讨论中的一些代码并偶然发现了这个并且想知道为什么klass=self.据我所知,他们是比我更好的ruby​​开发人员,这一定是有充分理由的。他们为什么不调用self.remove_from_cache!(message["key"],false)?该block是否正在创建一个新范围,其中self引用MessageBus类?是否有其他示例说明您需要在Ruby中创建此类构造,或者这是主要示例?如果MessageBus.subscribe是MessageBus的一个实例(比如说m_bus.subscribe)会自己引用block中的m_bus吗?ensure_class_liste

随机推荐