自学Swift-斯坦福笔记整理(五)

property list
NSUserDefaults像一个微型的数据库他智慧存储Property List
这个在APP退出以后会保留数据到下次启动
let defaults = NSUserDefaults.standardUserDefaults()
let plist: AnyObject = defaults.objectForKey(String)
defaults.setObject(AnyObject,forKey:String)
if !defaults.synchronize() {} //允许在后台运行
 
View
任何一个View都只有一个SuperView
addSubview(aView:UIView)     //把当前view加入到superview 
removeFromSuperview()     //把你想移除的view从superview中移除
初始化
init(frameLCGRect)     //这个frame就是superview的frame
init(coder:NSCoder)     //在Storyboard中初始化VIEW就是调用这个方法
//如果需要初始化
func setup() {…}
override init(frame:CGRect) {
     super.init(frame:frame)
     setup()
}
required init(coder aDecoder:NSCoder){
     super.init(coder:aDecider)
     setup()
}
//只限于Storyboard
awakeFromNib()表示,我刚刚从Storyboard中被加载出来

所有的坐标系的单位都是CGFloat
CGFloat是SWIFT中的结构体
CGPoint //表示坐标x和y
var point = CGPoint(x:37.0,y:55.2)
point.x -= 30
point.x += 20.0
CGSize //表示长和宽
var size = CGSize(width:100.0,height:50.0)
size.width += 42.5
size.height += 75
当CGPoint和CGSize组合起来就是一个CGRect
struct CGRect{
     var origin: CGPoint
     var size: CGSize
}
let rect = CGRect(origin:aCGPoint,size:aCGSize)
CGRect 内有很多方法
var minX:CGFloat //表示矩形左边值
var minY: CGFloat //表示矩形垂直方向上的中点
intersects(CGRect) -> Bool //传入一个矩形判断是否相交
intersect(CGRect) //传入一个矩形创建一个更小的这个小矩形是由两个矩形交叉的部分
contains(CGPoint) -> Bool //传入一个点判断是否在矩形内
….
uiview中像素是为左上角为(0,0)只用的单位为点不是像素在高分辨率中一个点可以代表多个像素
var contentScaleFactor:CGFloat //这个变量会返回每个点占多少个像素的只
var bounds: CGRect //它定义了坐标系中的绘制区域
bounds的原点通常是(0,0)

var center: CGPoint //是自身视图矩形的中点不过他是相对于父视图的坐标系,而不是自身的坐标系
var frame: CGRect //是父视图坐标系中用来包含子视图的一个矩形也是相对于父视图坐标系绘制时应该使用bounds
override func drawRect(regionThatNeedsToBeDrawn:CGRect)
永远不要调用drawRect方法
在视图中有一个叫做setNeedDisplay的方法uyao重绘视图的话,可以调用他
UIBezierPath 
Core Graphice Concepts中得拥有一个用来绘制的上下文(context)
C语言 API//可以通过UIGraphiceGetCurrentContext方法获得它会返回到这个cookie

创建路径(path),通过线条和弧线 设置颜色等uihou描边调从
UIBezierPath //它通常在当前的context上绘制
//绘制三角形 UIBezierPath
let path = UIBezierPath()//创建路径
path.moveToPoint(CGPoint(80,50))//在这个点范围移动
path.addLineToPoint(CGPoint(140,150))//添加一跳线乡下到140,150
path.addLineToPoint(CGPoint(10,150))//在添加另外一条线
path.clostPath()//关闭这个路径
//做到上面这步还不会显示出来.因为我们要描边和填充
UIColor.greenColor().setFill()      //设置填充颜色为绿色
UIColor.redColor().setStroke()     //描边颜色为红色
path.linewidth = 3.0     //设置线宽
path.fill()      //填充路径
path.stroke() //描边

let roundRect = UIBezierPath(roundeRect:aCGRect,cornerRadius:aCGRect)     //设置一个椭圆跟圆形
let oval = UIBezierPath(ovalInRect:aCGRect)     
addClip()      //剪切任意的path

fun containsPoint(CGPoint) -> Bool //碰撞检测

UIColor
var backgroundColor: UIColor
let transparentYellow = UIColor.yellowColor().colorwithAlphaComponent(0.5)//设置透明度
//如果想要用透明度来绘制i则必须告诉系统实现就必须设置
var opaque = false;
//可以把整个view设置为透明
var alpht: CGFloat
//可以完全隐藏一个view,只要设置它的hidden属性
var hidden: Bool

绘制文本
let text = NSAttributedSting(“hello”)
text.drawAtPoint(aCGPoint)
let textSize: CGSize = text.size

Fonts
class fun perferredFontForTextStyle(UIFontTextStyle) -> UIFont
textStyle类似标题或body(正文)这些东西
UIFontTextStyle.Headline     //标题
UIFontTextStyle.Body     //正文
UIFontTextStyle.Footnote     //注脚是在底部的一行小小的子
系统字体
class fun systemFontOfSize(pointtSize:CGFloat) -> UIFont
class fun boldSystemFontOfSize(pointSize:CGFloat) -> UIFont

Drawing Images
UIImageView
let image: UIImage? = UIImage(name:”foo”)

旋转为横屏后边界改变了.可以控制你的view的变化使用view中的一个叫
contentMode的属性就可以做到
var contentMode: UIViewContentMode
设置的属性为:.Left/.Right/.Top/.Bottom/.TopRight/.TopLeft/.BottomRight/.BottomLeft
改变属性后不会重绘你的蹄片,智慧根据规定的属性移动到对应的点上
缩放:.ScaleToFill(默认)/.ScaleAspectiFill/.ScaleAspectFill
      填满或者适应边界   

属性中如果不设置set只为get的话.可以直接return值
因为center的坐标为父视图的..所以如果本view要使用的话必须进行转换
方法为:convertPoint(center,fromView:superview);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值