一个被怼的小开发

我就看你皮


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

Swift <六> 类的基本使用

发表于 2018-04-26 | 分类于 Swift
字数统计: 451 | 阅读时长 ≈ 2

类的介绍

注意:当一个实例对象被创建好之后,必须保证里面所有的非可选属性都有值

// swift 中,类是可以不继承父类的,那它本身就是rootClass
class Person{

//方案一:
var name : String
init(){
self.name = ""
}
init(name:String){
self.name = name
}
//方案二:
var name : String?
//方案三:
var name : String = ""
//可以写属性和方法
//属性:实例属性,类型属性
//方法:实例方法,类型方法
}
//类,默认情况下,不会生成逐一构造函数(目的:保证所有非可选属性有值)
//默认情况下,不能保证,所有的非可选属性有值
//当一个实例对象被创建好之后,必须保证里面所有的非可选属性都有值
//方案一:在构造函数中下手
//方案二:把非可选改成可选
//方案三:把非可选赋默认值
let p = Person()

class Person1:NSObject{
var name: String
//若继承NSObject则必须重写构造方法
override init(){
self.name = ""
}
}
阅读全文 »

Swift <五> 枚举和结构体

发表于 2018-04-26 | 分类于 Swift
字数统计: 694 | 阅读时长 ≈ 3

枚举

语法规范: 枚举类型第一个字母小写

enum Direction {
case east
case west
case south
case north
}

Direction.west

// 或者
enum Fangxiang {
case east, west, south, north
}

给枚举赋值

Swift中,枚举默认情况下,不表示任何类型就是一个标识

枚举类型可以是字符串/字符/整形/浮点型

阅读全文 »

Swift <四> 类型转换和空和运算符

发表于 2018-04-26 | 分类于 Swift
字数统计: 511 | 阅读时长 ≈ 2

可选类型

什么是可选类型呢?一个变量要么有值,要么没有值。

那么为什么产生可选类型呢?比如在OC中基本数据如果不赋值都会存在默认值,所以不会产生没有值得情况,但是没有值和默认值是完全不同的两个概念所以Swift中引入了”可选类型的概念”,来区分有值和没有值两种情况

1、可选类型

可选类型也是一种类型,代表可能有值,也可能没有值
swift中nil,不同于oc中的nil,oc中的nil为一个特殊的地址,swift中nil就是一个特殊含义的字符,表示没有值
只有可选类型才能被赋值为nil
非可选类型无论在哪里,什么时候都有值

var num: Int? = 1
阅读全文 »

Swift <三>数组与字典

发表于 2018-04-26 | 分类于 Swift
字数统计: 232 | 阅读时长 ≈ 1

数组

可变数组

let arr: [Any] = [1,2,3]

不可变数组

let arr: [Any] = [1,2,3]

var array: [Any] = [1,2,3]

array.append(4)
array.insert("你好", at: 2)
array + [7,8]
array.remove(at: 1)
array.removeFirst(2)//删除前面两个
array.removeLast(2)//删除后面两个
array += [1,2,3]
array.removeSubrange(1...2)//删除某个区间
array[0] = 2 //改
array.removeAll()

array += [1,2,3]
array.count //个数
array.capacity //容量
阅读全文 »

Swift <二> 字符串

发表于 2018-04-26 | 分类于 Swift
字数统计: 153 | 阅读时长 ≈ 1

1、字符串的基本使用

OC与Swift字符串的区别

OC 中使用字符串类型是NSSting,Swift 中使用的字符串类型是String
OC中使用的是@“”,Swift用在“”
使用String的原因
String是一个结构体,性能更高(保存的是直接的值)
NSString是OC的一个对象,性能略差
String支持遍历

常见使用

阅读全文 »

Swift <一> 逻辑分支和循环

发表于 2018-04-26 | 分类于 Swift
字数统计: 571 | 阅读时长 ≈ 2

1. guard 语句

  1. guard 是swift2.0新增语法
  2. guard语句必须带有else语句,语法如下

当条件表达式为true时,跳过else语句中的内容,执行语句组内容

当条件表达式为false时,执行else语句内容,跳转语句一般是reture,break,continue,throw

//如果一个成年人带了省份证才能上网
func cherk(age:Int hasCard:Bool){
if age >= 18{
if hasCard{
print("老板,开个机")
}else{
print("回家拿身份证")
}
else{
print("未成年不能上网")
}
}

func cherkGuard(age:Int hasCard:Bool){
guard age >= 18 else {
print("老板,开个机")
return
}
guard hasCard else {
print("回家拿身份证")
return
}
print("未成年不能上网")
}
阅读全文 »

截屏、圆角、保存相册

发表于 2018-04-26 | 分类于 Swift
字数统计: 482 | 阅读时长 ≈ 2

图片圆角

具体方法和画图操作基本差不过,主要分为以下几个步骤
  1. 开启图片下上文
UIGraphicsBeginImageContextWithOptions(img.size, false, 0.0)
  1. 描述路径
let path: UIBezierPath = UIBezierPath.init(ovalIn: CGRect(x: 0,y: 0,width: img.size.width,height: img.size.height))
  1. 开始剪切
path.addClip()
  1. 开始绘制
img.draw(at: CGPoint(x: 0,y: 0))
  1. 生成图片
let newImg: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
  1. 关闭路径
UIGraphicsEndImageContext()
阅读全文 »

UIBezierPath

发表于 2018-04-26 | 分类于 iOS
字数统计: 3,092 | 阅读时长 ≈ 12

UIBezierPath

看了前面,大家是不是都想来看看UIBezierPath详解呢,然后开始展示真正的装逼技术撒,其实,看完你就会发现UIBezierPath也就那么回事(先泼一盆冷水)

创建UIBezierPath的类方法介绍

  • 初始化
+ (instancetype) bezierPath;
  • 初始化矩形
/**
* 该方法将会创建一个闭合路径, 起始点是 rect 参数的的 origin, 并且按照顺时针方向添加直线, 最终形成矩形
* @param rect: 矩形路径的 Frame
*/
+ (instancetype)bezierPathWithRect:(CGRect)rect;
  • 椭圆形
/**
* 该方法将会创建一个闭合路径, 该方法会通过顺时针的绘制贝塞尔曲线, 绘制出一个近似椭圆的形状. 如果 rect 参数指定了一个矩形, 那么该 UIBezierPath 对象将会描述一个圆形.
* @param rect: 矩形路径的 Frame
*/
+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
  • 圆角矩形

    阅读全文 »

画图基本操作

发表于 2018-04-26 | 分类于 iOS
字数统计: 942 | 阅读时长 ≈ 4

前言

应该是没有前言的,但是,尼玛,写了一上午的画图。第二天起来一看全没了,不得不吐槽下Gitbook,又得重复劳动…………


以下操作在均在自定义View的drawRect方法中

画线条

  • 获取上下文(在drawRect方法中系统已经帮我们创建好一个跟View相关联的上下文了,我们直接获取就行,其他的我们还要自己开启和关闭)
CGContextRef ctx = UIGraphicsGetCurrentContext();
  • 绘制路径
UIBezierPath *path = [UIBezierPath bezierPath];
//设置起点
[path moveToPoint:CGPointMake(50, 200)];
//添加一条线的终点
[path addLineToPoint:CGPointMake(280, 50)];

//画第二条线
[path moveToPoint:CGPointMake(100, 200)];
[path addLineToPoint:CGPointMake(250, 100)];

//把上一条线的终点当做下一天线的起点
[path addLineToPoint:CGPointMake(200, 200)];

如果我们想对线条做一些操作,可以用以下这几种方式

> //上下文的状态(线宽颜色)
> CGContextSetLineWidth(ctx, 10);
> //线的交点样式
> CGContextSetLineJoin(ctx, kCGLineJoinRound);
> //线的两头样式
> CGContextSetLineCap(ctx, kCGLineCapRound);
> //设置颜色(要和下文渲染和填充用一样的)
> //[[UIColor redColor] setStroke];
> //一般用这个设置颜色
> [[UIColor redColor] set];
>
阅读全文 »

LaunchImage启动页设置

发表于 2018-02-24
字数统计: 107 | 阅读时长 ≈ 1

使用Assets.xcassets中的launchImage设置启动图

  1. 如下图点击+新建 New Launch Image
  2. 然后根据需求选择是否要横屏和竖屏和版本选择
  3. 将 图片放入合适的位置,大小如下(单位px)
    阅读全文 »
12
一个被怼的小开发

一个被怼的小开发

我就看你皮

14 日志
2 分类
2 标签
GitHub E-Mail Google Twitter
友情推荐
  • Chaos
© 2018 一个被怼的小开发
|
主题 — NexT.Gemini v5.1.4
本站访客数:
博客全站共10.5k字