交互:利用滚动视图创建用户注册界面

交互App设计:

1.1利用滚动视图创建用户注册界面:

  绝大部份的应用的注册界面一般包含:用户名,密码,头像等必填信息。下面我们将具体讲解如何创建注册界面。

  step1:从对象库中拖拽一个Scroll View(滚动视图)到故事板中间的控制器视图,并调整其大小为整个屏幕的尺寸。

  之所以在视图中添加一个滚动视图,是因为当用户在注册页面输入用户信息的时候,弹出的虚拟键盘会遮挡底部的Text Field(尽管现在还没有创建它们),这将严重影响用户输入信息的体验。

  Scroll View是用来在屏幕上显示那些在有限区域内放不下的内容。例如,在屏幕上显示内容丰富的网页或者表单,亦或是很大的图片。在这种情况下,需要用户对屏幕进行拖动或缩放来查看屏幕或窗口区域外的内容。

  所以,Scroll View应该首先有一个窗口用来显示内容。其次,还要有内容本身。这个显示窗口就是Scroll View,这个窗口可以是整个手机屏幕,也可以只是手机屏幕的一部分区域。内容视图(Content View)则是需要填写的表单,查看的图片或者网页等信息的完整视图。通常,其大小会超过这个屏幕,正因为如此,我们才需要使用Scroll View。

  在滚动视图对象中,内容视图会储存完整的图片信息,而在滚动视图窗口中只会显示出一部分内容,我们必须借助平移手势来调整内容视图的偏移量(Content Offset),或者是通过掐捏手势调整内容视图的大小。

  在滚动视图对象里有几个属性需要大家了解:

  contentSize:它描述了有多大范围的内容需要使用Scroll View的窗口来显示,其默认值为CGSizeZero,也就是宽和高都是0。当contentSize小于当前scrollView的大小时,意味着用户要显示的内容在窗口范围内是可以全部显示的。这时,通常内容视图是拖不动的(内容可以全部显示)。之所以说是"通常",是因为通过某些设置,还是可以拖得动的,后面的滚动视图回弹机制会解释。所以要让视图可以拖动,我们得设置一个contentSize。

  contentOffset:描述了内容视图相对于Scroll View窗口的位置(相对于左上角的偏移量)。默认值是CGPointZero,也就是(0,0)。当视图被拖动时,系统会不断修改该值。也可以通过setContentOffset(_:animated:)方法让图片到达某个指定的位置。

  contentInset:表示Scroll View的内边距,也就是内容视图边缘和Scroll View的边缘的留空距离,默认值是UIEdgeInsetsZero,也就是没间距。这个属性用得不多,通常在需要刷新内容时才用得到。

 

  //对滚动视图的Outlet关联

  @IBOutlet weak var scrollerView:UIScrollerView!

  如果不方便对滚动视图 (ScrollerView)进行Outlet关联操作的话,可以在大纲视图中拖拽相应的界面元素Item到SignUPVC类中,效果是完全一样的。对于复杂的用户界面来说,经常会用到这种方法。因为有些时候往往是几个视图嵌套在一起,或者是排列得很紧密,不方便直接进行拖拽

 

 

 

  step2:在Outlet属性声明的下方,为SignUPVC类再添加一个属性scrollViewHeight变量,利用该属性可以在虚拟键盘出现和消失时,改变滚动视图contentSize属性的高度,使其向上滚动,从而提供更好的用户体验。

  @IBOutlet weak var scrollerView:UIScrollerView!

  //根据需要,设置滚动视图的高度

  var scrollViewHeight:CGFloat = 0

  可以想象,当用户单击Text Field以后会从屏幕底部滑出虚拟键盘,而键盘的高度正好会遮挡住位于下方的两个按钮和最下面的Text Field,这为我们信息的输入和检视带来了不小的麻烦。因此这里我设计用户界面的时候,就添加了滚动视图。当虚拟键盘出现时,可以增加滚动视图contentSize属性的高度,同时将需要显示的部分移动到虚拟键盘的顶部,这样就会给用户带来非常舒服的使用体验。

 

 

 

  step3:在scrollViewHeight属性的下面再添加一个属性变量keyboard,利用该变量获取虚拟键盘在出现时候的大小。

  @IBOutlet weak var scrollerView:UIScrollerView!

  //根据需要,设置滚动视图的高度

  var scrollViewHeight:CGFloat = 0

  //获取虚拟键盘的大小

  var keyboard:CGRect = CGRect()

  该属性是CGRect结构体类型,它包含了矩形的位置和大小信息。如果你按照command键并单击CGRect的话,编辑窗口会直接跳转到CGRect的声明文件,从CGRect结构的声明中可以发现,它包含了origin(CGPoint结构)和size(CGSize结构)两个重要属性。在iOS平台上,矩形用origin提供的店(矩形的左上角在父视图中的位置),再通过size属性提供的width和height来确定它的位置和大小。

 

 

  step4:获取当前的屏幕尺寸

  在注册视图中,我们需要编写一些代码来解决虚拟键盘出现以后的视图滚动问题。但首先要获取屏幕的尺寸,并且将该尺寸作为滚动视图的大小。

  1.在所在控制器中viewDidLoad添加如下代码:

  //滚动视图的窗口尺寸

  scrollView.frame = CGRect(x:0,y:0,width:self.view.frame.width,height:self.view.frame.height)

  viewDidLoad()方法在整个控制器的生存周期中只会被调用一次,就是在控制器视图载入完成以后,之后就不会再被调用了。直到控制器对象被销毁,再次创建一个新的控制器对象时,才会再次调用该方法。如果我们需要每次在控制器视图重新出现到屏幕的时候执行一些代码,则需要重写viewWillAppear(_:)方法,它会在视图将要呈现到屏幕时被调用,比如在导航控制器中比压入栈的控制器重新呈现出来的时候。

转载于:https://www.cnblogs.com/jerry-q1/articles/6493565.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园2.0是高校信息化建设的新阶段,它面对着外部环境变化和内生动力的双重影响。国家战略要求和信息技术的快速发展,如云计算、大数据、物联网等,为智慧校园建设提供了机遇,同时也带来了挑战。智慧校园2.0强调以服务至上的办学理念,推动了教育模式的创新,并对传统人才培养模式产生了重大影响。 智慧校园建设的解决之道是构建一个开放、共享的信息化生态系统,利用互联网思维,打造柔性灵活的基础设施和强大的基础服务能力。这种生态系统支持快速迭代的开发和持续运营交付能力,同时注重用户体验,推动服务创新和管理变革。智慧校园的核心思想是“大平台+微应用+开放生态”,通过解耦、重构和统一运维监控,实现服务复用和深度融合,促进业务的快速迭代和自我演化。 智慧校园的总体框架包括多端协同,即“端”,它强调以人为中心,全面感知和捕获行为数据。这涉及到智能感知设备、超级APP、校园融合门户等,实现一“码”或“脸”通行,提供线上线下服务端的无缝连接。此外,中台战略是智慧校园建设的关键,包括业务中台和数据中台,它们支持教育资源域、教学服务域等多个领域,实现业务的深度融合和数据的全面治理。 在技术层面,智慧校园的建设需要分期进行,逐步解耦应用,优先发展轻量级应用,并逐步覆盖更多业务场景。技术升级路径包括业务数据化、数据业务化、校园设施智联化等,利用IoT/5G等技术实现设备的泛在互联,并通过人工智能与物联网技术的结合,建设智联网。这将有助于实现线上线下一网通办,提升校园安全和学习生活体验,同时支持人才培养改革和后勤管理的精细化。 智慧校园的建设不仅仅是技术的升级,更是对教育模式和管理方式的全面革新。通过构建开放、共享的信息化生态系统,智慧校园能够更好地适应快速变化的教育需求,提供更加个性化和高效的服务,推动教育创新和人才培养的高质量发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值