iOS实用开发技巧-Swift
2017-06-11 本文已影响294人
Thinkdifferents
网页版点击不能正常跳转, 导致很不方便, 下方留言, 发MarkDown 格式文本!
-
UITableView的Group样式下顶部空白处理
-
UITableView的plain样式下,取消区头停滞效果
-
获取某个view所在的控制器
-
两种方法删除NSUserDefaults所有记录
-
打印系统所有已注册的字体名称
-
禁止锁屏
-
模态推出透明界面
-
字符串按多个符号分割
-
iOS跳转到App Store下载应用评分
-
iOS 获取汉字的拼音
-
手动更改iOS状态栏的颜色
-
判断当前ViewController是push还是present的方式显示的
-
获取实际使用的LaunchImage图片
-
iOS在当前屏幕获取第一响应
-
判断对象是否遵循了某协议
-
判断view是不是指定视图的子视图
-
NSArray 快速求总和 最大值 最小值 和 平均值
-
修改UITextField中Placeholder的文字颜色
-
关于NSDateFormatter的格式
-
获取一个类的所有子类
-
监测IOS设备是否设置了代理,需要CFNetwork.framework
-
阿拉伯数字转中文格式
-
Base64编码与NSString对象或NSData对象的转换
-
取消UICollectionView的隐式动画
-
让Xcode的控制台支持LLDB类型的打印
-
CocoaPods pod install/pod update更新慢的问题
-
UIImage 占用内存大小
-
GCD timer定时器
-
图片上绘制文字 写一个UIImage的category
-
查找一个视图的所有子视图
-
计算文件大小
-
UIView设置部分圆角
-
取上整与取下整
-
计算字符串字符长度,一个汉字算两个字符
-
给UIView设置图片
-
防止scrollView手势覆盖侧滑手势
-
去掉导航栏返回的back标题
-
字符串中是否含有中文
-
dispatch_group的使用
-
UITextField每四位加一个空格,实现代理
-
获取私有属性和成员变量 #import <objc/runtime.h>
-
获取手机安装的应用
-
判断两个日期是否在同一周 写在NSDate的category里面
-
应用内打开系统设置界面
-
屏蔽触发事件,2秒后取消屏蔽
-
动画暂停再开始
-
fillRule原理
-
iOS中数字的格式化
-
如何获取WebView所有的图片地址
-
获取到webview的高度
-
navigationBar变为纯透明
-
tabBar同理
-
navigationBar根据滑动距离的渐变色实现
-
iOS 开发中一些相关的路径
-
navigationItem的BarButtonItem如何紧靠屏幕右边界或者左边界?
-
NSString进行URL编码和解码
-
UIWebView设置User-Agent
-
获取硬盘总容量与可用容量:
-
获取UIColor的RGBA值
-
修改textField的placeholder的字体颜色、大小
-
AFN移除JSON中的NSNull
-
ceil()和floor()
-
UIWebView里面的图片自适应屏幕
<h3 id="1">UITableView的Group样式下顶部空白处理</h3>
//分组列表头部空白处理
let view: UIView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 0.1))
tableView.tableHeaderView = view
<h3 id="2">UITableView的plain样式下,取消区头停滞效果</h3>
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let sectionHeaderHeight = scrollView.bounds.height
if (scrollView.contentOffset.y <= sectionHeaderHeight && scrollView.contentOffset.y > 0) {
scrollView.contentInset = UIEdgeInsets(top: -scrollView.contentOffset.y, left: 0, bottom: 0, right: 0)
} else if (scrollView.contentOffset.y >= sectionHeaderHeight) {
scrollView.contentInset = UIEdgeInsets(top: -sectionHeaderHeight, left: 0, bottom: 0, right: 0)
}
}
<h3 id="3">获取某个view所在的控制器</h3>
func viewController() -> UIViewController {
var viewController = UIViewController()
var next: UIResponder? = self.next
while next != nil {
if (next?.isKind(of: NSClassFromString("UIViewController")!))! {
viewController = next as! UIViewController
break
}
next = next?.next
}
return viewController
}
<h3 id="4">两种方法删除NSUserDefaults所有记录</h3>
//方法一
if let appDomain = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: appDomain)
}
//方法二
func resetDefaults() {
let defs = UserDefaults.standard
let dict = defs.dictionaryRepresentation()
for key in dict {
defs.removeObject(forKey: key.key)
}
defs.synchronize()
}
<h3 id="5">打印系统所有已注册的字体名称 </h3>
// 打印系统所有已注册的字体名称
func enumerateFonts() {
for familyName in UIFont.familyNames {
print(familyName)
let fontNames = UIFont.fontNames(forFamilyName: familyName)
for fontName in fontNames {
print("\t| - \(fontName)")
}
}
}
<h3 id="8">禁止锁屏</h3>
UIApplication.shared.isIdleTimerDisabled = true
<h3 id="9">模态推出透明界面</h3>
let vc = UIViewController()
let na = UINavigationController(rootViewController: vc)
let str = UIDevice.current.systemVersion
let numStr = Double(str)
if numStr! >= 8.0 {
na.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
} else {
na.modalPresentationStyle = UIModalPresentationStyle.currentContext
}
present(na, animated: true, completion: nil)
<h3 id="12">字符串按多个符号分割</h3>
let str = "abc,vfr.yuu"
let set = NSCharacterSet.init(charactersIn: ",.")
print(str.components(separatedBy: set as CharacterSet))
<h3 id="14">获取汉字的拼音</h3>