在经历的一段时间的郁闷之后,我发现感情都是虚伪的,只有代码是真实的(呸)

因为看了swift语法之后依然不会用swift,然后我非常作死的跑去看官方文档,就是xcode里自带的help》documentation and API reference

其中的swift里的guide

这里主要总结一下里面每一章讲了什么,还有自己学到的东西和需要研究的东西

part 2:Building a Basic UI

work with view controllers

关于比较基础的viewDidLoad,viewWillApper,viewDidAppear这三个方法的执行顺序和作用,因为之前就知道所以没啥感觉,就是看英语太费劲

然后就是把ImageView拉线拉到代码里,按住control键用鼠标直接从xib里拖过去

但是这里的约束只设置了Aspect Ratio,其他的都没有设置,我感觉拉约束这一点还要再学习一下

然后又讲了一下assers.xcassets的作用,就是把图片放进去

然后又给这个imageView添加了一个手势,直接从控件列表里把收拾拖到imagveiw上面就成了,特别快

之后把手势Control-drag到代码里,type选择UITapGestureRecognizer,代码里就多了一个手势的方法

关于调用手机里的图片的方法,在手势触发之后,创建图片选择器,设置给选择器设置代理,然后弹出图片选择器,在选择器的代理方法里把选定的图片给imageView,然后移除选择器

我学到的:代理方法是不用写override的

Implement a Custom Control

这章感觉学到的挺多的

1在swift中将xib里的view和自己创建的文件连接起来

首先创建一个文件,UIView类型的,然后在xib里创建一个view,在属性栏class那里填上自己创建的文件的名字,那么这个view就和自己创建的文件关联起来了

2 init

在这里有一个init(frame:) 和init(coder:) 如果是自己手动添加的view使用init(frame:) 来初始化,如果是xib中的view使用init(coder:)来初始化,所以这里使用init(coder:)

基本格式是

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

3 intrinsicContentSize()

这个函数是用来告诉xib你的view基础尺寸是多大,虽然还不知道啥时候调用

override func intrinsicContentSize() -> CGSize {
return CGSize(width: 240, height: 44)
}

4 layoutSubViews()

因为创建的view的大小是固定的,所以往上面添加view的时候,使用的是frame,所以可以用到这个函数来改变subViews的大小

override func layoutSubviews() {
}

5 给属性添加监听

这个当初也看过,然后现在也不记得了,,,

    var rating = 0 {
didSet{
setNeedsLayout()
}
}

6 声明一个数组

也是看过不记得系列

var ratingButtons = [UIButton]()

7 如何在swift中声明一个button

            let button = UIButton()

            button.setImage(emptyStarImage, forState: .Normal)
button.setImage(filledStarImage, forState: .Selected)
button.setImage(filledStarImage, forState: [.Highlighted,.Selected]) button.adjustsImageWhenDisabled = false button.addTarget(self, action: #selector(ratingButtonTappped(_:)), forControlEvents: .TouchDown)
ratingButtons += [button]
addSubview(button)

swift里的各种省略主语,用点来代替,很方便,可惜我有点晕

特别是addSubView这个函数,我到底add到哪里貌似不知道啊,我要是想add到其他的view上面咋整啊

8 let buttonSize = Int(frame.size.height)

获取在xib是view的尺寸

所有的代码

//
// RatingControl.swift
// FoodTracker
//
// Created by chebao on 16/9/13.
// Copyright © 2016年 chebao. All rights reserved.
// import UIKit class RatingControl: UIView {
//MARK:Properties
var rating = 0 {
didSet{
setNeedsLayout()
}
}
var ratingButtons = [UIButton]()
let spacing = 5
let starCount = 5 //MARK:Initialzation
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder) let filledStarImage = UIImage(named: "filledStar")
let emptyStarImage = UIImage(named: "emptyStar") for _ in 0..<starCount{
let button = UIButton() button.setImage(emptyStarImage, forState: .Normal)
button.setImage(filledStarImage, forState: .Selected)
button.setImage(filledStarImage, forState: [.Highlighted,.Selected]) button.adjustsImageWhenDisabled = false button.addTarget(self, action: #selector(ratingButtonTappped(_:)), forControlEvents: .TouchDown)
ratingButtons += [button]
addSubview(button)
}
} override func layoutSubviews() {
//Set the button's width and height to a square the size of the frame's height
let buttonSize = Int(frame.size.height) var buttonFrame = CGRect(x: 0, y: 0, width: buttonSize, height: buttonSize)
//Offset each button's origin by the length of the button plus spacing
for (index,button) in ratingButtons.enumerate() {
buttonFrame.origin.x = CGFloat(index*(buttonSize+spacing))
button.frame = buttonFrame
} updateButtonSelectionStates()
} override func intrinsicContentSize() -> CGSize {
let buttonSize = Int(frame.size.height)
let width = (buttonSize * starCount) + (spacing * (starCount - 1)) return CGSize(width: width, height: buttonSize)
} //MARK:Button Action
func ratingButtonTappped(button: UIButton){
rating = ratingButtons.indexOf(button)! + 1 updateButtonSelectionStates()
} func updateButtonSelectionStates() {
for (index,button) in ratingButtons.enumerate(){
button.selected = index < rating
}
}
}

  

Define Your Data Model

刚开始讲了点数据模型,就是之前学的,只不过那个init方法我还没复习,所以有点蒙蔽,后来又开始讲单元测试,我操,我要是早点看到这些,当初强哥让我写测试用例的时候,我也不会跟要死了一样了

不知道是不是因为我之前研究过单元测试,还是说苹果写的太简单,总之,我感觉好简单就看完了

我学到的:运行所有单元测试的快捷键:command+u

  

Swift -- 官方文档Swift-Guides的学习笔记的更多相关文章

  1. Swift入门系列--Swift官方文档(2.2)--中文翻译--About Swift 关于Swift

    About Swift 关于Swift 官方文档的翻译,仅供参考,本人英语本就不好,边学边翻译,不喜勿喷. Swift is a new programming language for iOS, O ...

  2. swift 官方文档

    swift 官方文档 https://swift.org/blog/

  3. swift官方文档中的函数闭包是怎么理解的?

    官方文档中的16页: numbers.map({ (number: Int) -> Int in let result = * number return result }) 不知道这个怎么用, ...

  4. swift官方文档中的switch中case let x where x.hasSuffix("pepper")是什么意思?

    在官方文档中,看到这句.但不明白什么意思. let vegetable = "red pepper" switch vegetable { case "celery&qu ...

  5. Swift -- 中文版两大官方文档汇总

    Swift官方文档由CocoaChina翻译小组精心翻译制作而成,目前两本文档中文版已全部完成!在此,我们对所有参与的译者.组织人员以及工作人员表示衷心的感谢!本文为您提供两本文档的在线阅读以及下载! ...

  6. Kryo官方文档-中文翻译

    Kryo作为一个优秀的Java序列化方案,在网上能找到不少测评,但未见系统的中文入门或说明文档.官方文档是最好的学习文档.虽然英文不差,但啃下来毕竟没母语来的舒服.这里抽出时间做些翻译,以方便大家查阅 ...

  7. The Swift Programming Language 英文原版官方文档下载

    The Swift Programming Language 英文原版官方文档下载 今天Apple公司发布了新的编程语言Swift(雨燕)将逐步代替Objective-C语言,大家肯定想学习这个语言, ...

  8. Django 2.0官方文档中文 渣翻 总索引(个人学习,欢迎指正)

    Django 2.0官方文档中文 渣翻 总索引(个人学习,欢迎指正) 置顶 2017年12月08日 11:19:11 阅读数:20277 官方原文: https://docs.djangoprojec ...

  9. Spring 4 官方文档学习 Spring与Java EE技术的集成

    本部分覆盖了以下内容: Chapter 28, Remoting and web services using Spring -- 使用Spring进行远程和web服务 Chapter 29, Ent ...

随机推荐

  1. jqGrid 各种参数 详解

    JQGrid JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGrid Demo 是一个在线的演示项目.在这里,可以知道jqgrid可以做什么事情. 下面 ...

  2. Longest Consecutive Sequence

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. C ...

  3. Java for LeetCode 048 Rotate Image

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

  4. ORACLE清除某一字段重复的数据(选取重复数据中另一个字段时期最大值)

    需求:资产维修表中同一资产可能维修完继续申请维修,这时候维修状态需要根据最近的维修时间去判断维修状态,所以同一资产ID下会出现重复的数据(维修审批通过,维修审批未通过),或者可能不出现(未申请维修), ...

  5. 【python-mysql】在ubuntu下安装python-mysql环境

    1.先安装mysql sudo apt-get install mysql-server apt-get isntall mysql-client sudo apt-get install libmy ...

  6. [Android Pro] 横竖屏切换时,禁止activity重新创建,android:configChanges="keyboardHidden|orientation" 不起作用

    referece to : http://blog.csdn.net/mybook1122/article/details/24978025 这个网上搜索,很多结果都是: AndroidManifes ...

  7. jQuery 知识点积累

    1.判断checkbox是否选中   $("#aa").prop("checked")==true2.给属性赋值   $("#aa").pr ...

  8. Gym 100650H Two Ends DFS+记忆化搜索

    Problem H: Two EndsIn the two-player game “Two Ends”, an even number of cards is laid out in a row. ...

  9. android去掉标题栏

    在AndroidManifest.xml修改 把 <applicationandroid:allowBackup="true"android:icon="@draw ...

  10. n个元素进栈,共有多少种出栈顺序?

    1.基于栈的问题分析 我们把n个元素的出栈个数的记为f(n), 那么对于1,2,3, 我们很容易得出:                                   f(1) = 1     / ...