1.swift @discardableResult 声明:

swift正常的方法如果有返回值的话,调用的时候必须有一个接收方,否则的话编译器会报一个警告,
如果在方法前加上 @discardableResult 不处理的时候就不会有警告了。也可以用一个通配符接收方法返回值,可以达到同样的目的。

2.控制器初始化:

init(urlStr: String?) {
super.init(nibName: nil, bundle: nil)
if let urlStr = urlStr {
self.urlStr = urlStr
}
}
UIView初始化:调用父类initWithFrame

3.更新View的约束:

/// 更新二级菜单约束
private func updateSecondCategoryLayout(){
if let tempHeight = height {
secondCategoryView.needsUpdateConstraints()
tempHeight.update(offset: )
UIView.animate(withDuration: 0.25) {
self.secondCategoryView.layoutIfNeeded()
}
}
}

4.上拉加载更多:

printTable.mj_footer = MJRefreshAutoNormalFooter(refreshingBlock: { [weak self] in
guard let `self` = self else {return}
if self.pageNum <= self.totalPage {
self.loadData()
} else {
self.printTable.mj_footer.endRefreshing()
self.printTable.mj_footer.endRefreshingWithNoMoreData()
}
})

5.UIView.performWithoutAnimation:

UIView.performWithoutAnimation {
planDiscountCollectionView.reloadSections(IndexSet(integer: IndexSet.Element()))
} //视图转换时不执行动画,参数为block对象,来执行你要执行的代码
+ (void)performWithoutAnimation:(void (^)(void))actionsWithoutAnimation

6.十进制转换:

if tempTextCount.decimalValue > NSDecimalNumber(string: WaiterManager.shared.waiterPower(PowerCode.ignore)?.powerValue).decimalValue {
}

7.限制textField只能输入3个字符:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

        let currentCharacterCount = textField.text?.count ??
let newLength = currentCharacterCount + string.count - range.length
return newLength <=
}

8.变量安全使用使用set方法private,可以调方法改变值:

class HHTComboGlobalData: NSObject {
static let shared = HHTComboGlobalData() private(set) var comboModes:[ComboModel] = [] func setComboModel(with dicts:[JSONDictionary]) {
comboModes.removeAll()
comboModes = dicts.flatMap { (dict) -> ComboModel? in
return ComboModel(with: dict)
}
}
}

9.for循环创建九宫格:

private func setupUI() {
let count: Int =
let width: CGFloat =
let height: CGFloat =
let bgViewWidth: CGFloat =
let col: Int =
// 间距
let hMargin = (bgViewWidth - (CGFloat(col) * width)) / CGFloat((col+))
let vMargin:CGFloat = var row:Int =
for i in ..<count {
let button: UIButton = UIButton()
button.setTitle("打印一", for: .normal)
button.setTitleColor(UIColor.white, for: .normal)
button.backgroundColor = UIColor.red
if i%col == {
row +=
}
var y: CGFloat =
if row == {
y =
} else {
y = vMargin + (height + vMargin) * CGFloat(row)
}
let x:CGFloat = hMargin + (width + hMargin) * CGFloat(i%col)
button.frame = CGRect(x: x, y: y, width: width, height: height)
bgView.addSubview(button)
bottomMargin = button.frame.maxY +
}
bgHeightConstraint.constant = bottomMargin!
}
}

Swift编码总结4的更多相关文章

  1. Swift— Swift编码规范之命名规范-备

    程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要. 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名,一般只是命名变量,原则是:变量名=类型前缀+描述,如bFoo表示 ...

  2. 《从零开始学Swift》学习笔记(Day 56)——命名规范Swift编码规范之命名规范

    原创文章,欢迎转载.转载请注明:关东升的博客 程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要. 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名,一般只是命名变量, ...

  3. 《从零開始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范

    原创文章,欢迎转载.转载请注明:关东升的博客 程序代码中到处都是自定义的名字,取一个有样而且符合规范的名字非常重要. 命名方法非常多,可是比較有名的,广泛接受命名法有: 匈牙利命名,一般仅仅是命名变量 ...

  4. Swift之Swift编码规范

    swift 支持的 markdown 语法. 1. 编码格式 1.1 使用二元运算符(+, -,==, 或->)的前后都需要添加空格 let value = + 1.2 在逗号后面加一个空格 l ...

  5. 《从零开始学Swift》学习笔记(Day 57)——Swift编码规范之注释规范:文件注释、文档注释、代码注释、使用地标注释

    原创文章,欢迎转载.转载请注明:关东升的博客 前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/).这里来介绍一下他们的使用规范. 1.文件注释 文件注释就在每一个文件开头 ...

  6. 《从零開始学Swift》学习笔记(Day 57)——Swift编码规范之凝视规范:文件凝视、文档凝视、代码凝视、使用地标凝视

    原创文章.欢迎转载.转载请注明:关东升的博客 前面说到Swift凝视的语法有两种:单行凝视(//)和多行凝视(/*...*/).这里来介绍一下他们的使用规范. 1.文件凝视 文件凝视就在每个文件开头加 ...

  7. 一种swift编码风格指南(供参考,by linkedin)

    http://www.cocoachina.com/swift/20160701/16894.html

  8. 《从零开始学Swift》学习笔记(Day 58)—— Swift编码规范之变量或常量声明规范

    原创文章,欢迎转载.转载请注明:关东升的博客 声明是在声明变量.常量.属性.方法或函数和自定义类型时候需要遵守的规范. 首先变量或常量时每行声明变量或常量的数量推荐一行一个,因为这样以利于写注释.示例 ...

  9. [Swift]编码拾遗

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs ...

  10. Swift编码总结10

    1.打开App显示文件已损坏,打不开,您应该将它移到废纸篓,怎么办? 终端输入执行:sudo spctl --master-disable 2.Mac的Siri打开网页控制台,进入开发中模式:不过我觉 ...

随机推荐

  1. svn: E155004: Working copy '/data/www' locked.

    svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) svn: E155004: Working c ...

  2. easyui_验证扩展

    本文为转载,并非原创 easyui validatebox 验证类型 分类: jquery-easyUI -- : 11000人阅读 评论() 收藏 举报 easyuiValidateBox requ ...

  3. UVALive - 4097:Yungom(逼近 贪心)(DP)

    pro:有D个字母,每个字母有自己的权值,现状需要用它们拼出N个单词,使得这些单词互相不为另外一个的前缀. 且单词的权值和最小.D<=200; N<=200; sol:如果建立字典树,那个 ...

  4. async-validator 表单验证注意事项

    1. this.$refs[formName].validate()里面的内容不执行 解决问题出处:https://segmentfault.com/q/1010000009679079 问题描述:1 ...

  5. linux查看文件相关命令

    通过命令+文件名查看内容.如下命令可以查看. 1,cat:由第一行开始显示文件内容:一次性显示文件所有内容 2,tac:从最后一行开始显示,可以看出tac与cat字母顺序相反:一次性显示文件所有内容, ...

  6. Django REST framework版本控制

    参考链接:https://www.cnblogs.com/liwenzhou/p/10269268.html 1.路由: #版本控制 re_path('^(?P<version>[v1|v ...

  7. LeetCode 1061. Lexicographically Smallest Equivalent String

    原题链接在这里:https://leetcode.com/problems/lexicographically-smallest-equivalent-string/ 题目: Given string ...

  8. learning at command AT+CFUN

    [Purpose] Learning how to controls the functionality level. It can also be used to reset the UE (飞行模 ...

  9. Hungry Canadian

    Hungry Canadian(简单dp) 具体见代码注释 #include <iostream> #include <cstdio> #include <cstring ...

  10. I Count Two Three(打表+排序+二分查找)

    I Count Two Three 二分查找用lower_bound 这道题用cin,cout会超时... AC代码: /* */ # include <iostream> # inclu ...