《iOS高级应用开发技术》实验报告七详细答案.doc

上传人:s****u 文档编号:12767183 上传时间:2020-05-23 格式:DOC 页数:11 大小:586.50KB
返回 下载 相关 举报
《iOS高级应用开发技术》实验报告七详细答案.doc_第1页
第1页 / 共11页
《iOS高级应用开发技术》实验报告七详细答案.doc_第2页
第2页 / 共11页
《iOS高级应用开发技术》实验报告七详细答案.doc_第3页
第3页 / 共11页
点击查看更多>>
资源描述
实验编号:7四川师大IOS应用开发技术实验报告2017年11月9日计算机科学学院2015 级 实验名称: Calculator 指导老师:_李贵洋_ 实验成绩:_实验 七 Calculator一、目的要求:通过实现一款功能完整的Calculator,掌握MVC的主要思想;二、实验内容:(1) 参照Stanford视频1和2完成一个Calculator的制作;(2) 在(1)的基础上进一步完成Stanford作业1的完整要求。(3) 采用autolayout的stackview和约束实现一下布局:3、主要仪器设备及药品:iMac(Mac OS、XCode)三、实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)l 代码:ViewController.swift :/ViewController.swift/text7/Createdbywuon2017/11/9./Copyright2017年2015110445.Allrightsreserved./importCocoaclassViewController:NSViewControllerIBOutletweakvardisplay:NSTextFieldCell!/显示值的文本框varisUerTyping=false/判断用户是否正在输入overridefuncviewDidLoad()super.viewDidLoad()/Doanyadditionalsetupafterloadingtheview./更改窗口背景图片letimage=NSImage(named:timg)letimageView=NSImageView(image:image!)imageView.frame=self.view.boundsself.view.addSubview(imageView,positioned:NSWindowOrderingMode.below,relativeTo:self.view)/设置文本框不可编辑display.isEditable=false/输入值(数组按钮和.按钮)IBActionfuncsetValue(_sender:NSButton)ifisUerTypinglettitle=sender.titleiftitle!=.|!display.title.contains(.)display.title+=titleelsedisplay.title=sender.titleisUerTyping=true/文本框中的显示值vardisplayValue:DoublegetreturnDouble(display.title)!setdisplay.title=String(newValue)/实例化一个计算器的模型privatevaroperat=Operation()/进行计算(特殊字符按钮)IBActionfuncoperation(_sender:NSButton)/先将文本框中的内容保存到结构体实例中ifisUerTypingoperat.setOperand(operand:displayValue)isUerTyping=false/再进行计算operat.performCalculation(symbol:sender.title)/最后显示结果ifletresult=operat.resultdisplayValue=resultoverridevarrepresentedObject:Any?didSet/Updatetheview,ifalreadyloaded.Result.swift:/Result.swift/text7/Createdbywuon2017/11/9./Copyright2017年2015110445.Allrightsreserved./importFoundationstructOperationprivatevaraccumulator:Double?/保存值/枚举出特殊符号的计算方法privateenumOperationscaseconstant(Double)/常量caseunaryOperation(Double)-Double)/一元运算casebinaryOperation(Double,Double)-Double)/二元运算caseequals/等于,输出结果/特殊符号计算方法的具体实现privatevaroperations:Dictionary=:Operations.unaryOperation(sqrt),cos:Operations.unaryOperation(cos),sin:Operations.unaryOperation(sin),+:Operations.binaryOperation($0+$1),:Operations.binaryOperation($0-$1),:Operations.binaryOperation($0*$1),:Operations.binaryOperation(if$1=0return0elsereturn$0/$1),=:Operations.equals/准备进行二元运算privatestructPendingBinaryOperationletfunction:(Double,Double)-DoubleletfirstOperan:Doublefuncperform(withsecondOperand:Double)-Doublereturnfunction(firstOperan,secondOperand)/结构体实例,准备进行二元运算privatevarpendingBinaryOperation:PendingBinaryOperation?mutatingfuncperformCalculation(symbol:String)ifletoperation=operationssymbolswitchoperationcase.constant(letvalue):accumulator=value/常量直接设置值case.unaryOperation(letfunction):ifaccumulator!=nilaccumulator=function(accumulator!)/一元运算计算后再设置值case.binaryOperation(letfunction):ifaccumulator!=nilpendingBinaryOperation=PendingBinaryOperation(function:function,firstOperan:accumulator!)/二元运算,先将第一次输入的数据和运算符保存,等待下一次输入accumulator=nilcase.equals:ifpendingBinaryOperation!=nil&accumulator!=nilaccumulator=pendingBinaryOperation?.perform(with:accumulator!)/等号,计算结果pendingBinaryOperation=nilmutatingfuncsetOperand(operand:Double)accumulator=operand/设置运算值varresult:Double?returnaccumulator/返回结果l 运行结果:布局:第一种布局:1、在Main.stroyboard中向界面拖三个UIView并设置各自的背景颜色;2、先选中三个视图,然后点击Embed In Stack,将三个视图放入一个栈中 ;3、设置这个栈的参数(Aligment设置为fill,Distribution设置为fill equally,spacing设置为10) ;4、设置相应的约束,使autolayout能识别这三个视图组成的栈的对应位置。 在Stack上按下control键,并拖动鼠标指向View,这时就会有相应的提示框弹出来设置约束,我们这里选择如下三个参数:(Center Horizontally in Safe Area)设置x位置、(Center Vertically in Safe Area)设置y位置、(Equal Widths)设置宽;5、选择Aspect Ratio尺寸比例; 6、在右边的尺寸检查器中编辑该约束,将比例设置为1:1,也就是使高度和宽度相等。 如下:第二种布局:对中间三个视图进行布局,先将是三个视图放入栈中,设置间隙和填充方式,然后添加约束1、相对于View的约束和Stack自身的约束选择如下:2、编辑一下约束,设置高度为50,相对于View左边距为10(Leading Space to Safe Area),相对于View右边距为-10(Trailing Space to Safe Area) 3、进行上半部分两个视图的操作。 选中两个视图,然后放入栈中,相应的参数更改如下: 4、再设置与View之间的约束、与中间三个视图组成的Stack之间的约束 5、修改相应的约束值 与View的top之间的间隙为-10,底部与Stack View之间的间隙为10 最后结果如下:4、 实验结果的分析与评价(该部分如不够填写,请另加附页)答:(1)通过本次试验报告,参照Stanford视频练习了计算器的代码编写,掌握了MVC的一些思想,以及通过autolayout的stackview和约束实现了布局;(2)了解了MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。注:实验成绩等级分为(90100分)优,(8089分)良,(70-79分)中,(6069分)及格,(59分)不及格。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!