iOS
L63C
这个作者很懒,什么都没留下…
展开
-
iOS导航栏返回按钮
之所以取 self.viewControllers.last 的最后一个,因为可能控制addsubController ,有从subVC 跳转到其他的控制器。原创 2023-11-07 11:41:23 · 112 阅读 · 0 评论 -
使用KVC提取集合的部分元素,或简单运算
集合运算支持5中@avg, @count , @max , @min ,@sum5@interface Book : NSObject@property (nonatomic,copy) NSString* name;@property (nonatomic,assign) CGFloat price;@end@implementation Book@endBook *book1 = [Book new];book1.name = @"The Great Gastby";bo原创 2022-02-14 11:41:30 · 962 阅读 · 0 评论 -
类似今日头条的滑动标题,滚动标题
类似今日头条的滑动标题pod 'LCCPageView'//import LCCPageView fileprivate func setupUI() {// let titles = ["你好","爱上","颠覆","颠信"] let titles = ["你好","阿双方就开始","阿瑟","阿斯顿发","时代","你好","阿双方就开始","阿瑟","阿斯顿发"] let config = PageTitleConfig原创 2022-01-11 17:51:11 · 1077 阅读 · 0 评论 -
iOS横向表情键盘
横向表情键盘原创 2022-01-11 17:50:15 · 797 阅读 · 0 评论 -
iOS异步变成同步
异步改同步原创 2022-01-11 15:53:05 · 1917 阅读 · 0 评论 -
IOS 关于锁
前言为什么需要锁:多条线程存在同时操作(删、查、读、写)同一个文件or对象or变量。如果不是同时或者不是同一个那就不用加锁了。关键变量:必须是“同时”,“同一事物”自旋锁OSSpinLock个人理解:就是一直等,忙等,一直while 到锁被解开,自旋锁不会让等待的线程进入休眠状态已经废弃,容易出现优先级反转关于优先级反转:现在有2个高优先级线程A,一个低优先级线程B情况1:A先获得锁,执行A线程的任务,然后B获取锁,执行B的任务。正常情况2:B先获得锁,因为B是低优先级线程,这个时候系统原创 2022-01-11 12:23:26 · 1355 阅读 · 0 评论 -
swift 播放Gif图片
// 1.加载Gif图片, 并且转成Data类型 guard let path = Bundle.main.path(forResource: "demo.gif", ofType: nil) else { return } guard let data = NSData(contentsOfFile: path) else { return } // 2.从data中读取数据: 将data转成CGImageSource对象原创 2021-12-10 11:57:06 · 978 阅读 · 0 评论 -
Lable描边
override func drawText(in rect: CGRect) { // 1.获取上下文 let context = UIGraphicsGetCurrentContext() // 2.给上下文线段设置一个宽度, 通过该宽度画出文本 context?.setLineWidth(5) context?.setLineJoin(.round) context?.setTextDra原创 2021-12-10 11:32:14 · 1417 阅读 · 0 评论 -
粒子动画,做礼物,雪花等特效
extension Emitterable where Self : UIViewController { func start() { // 1.创建发射器 let emitter = CAEmitterLayer() // 2.设置发射器的位置 emitter.emitterPosition = CGPoint(x: view.bounds.width * 0.5, y: -60) .原创 2021-12-08 12:17:20 · 294 阅读 · 0 评论 -
一种使用协议代替NSNotificationCenter 的方案
写在前面关于NSNotificationCenter 大家并不陌生,今天我们就来简单的聊聊。NSNotificationCenter and Delegate 都是可以做到通知去做某事,NSNotificationCenter 可以通知多个,Delegate 只能通知一个。这是Notification的优点,但同时也是它的缺点。在多人合作的项目中,我们经常会出现一些尴尬的情况,发出一个通知后,数据就被其他类监听,然后数据就被莫名其妙的修改了,这种问题如果开始没有想到是通知的锅,就很难排查了发出通知原创 2021-11-29 16:46:52 · 898 阅读 · 0 评论 -
AWSS3文件断点下载,分片上传,断点续传
LCCFileService支持断点续传支持断点下载大文件分片上传最大同时上传,下载队列可控上传,下载,进度多种方式监听可以自定义下下载,上传器(目前是封装的亚马逊AWSS3)秒传,秒下载(通过MD5和FileKey,判定文件是否已经上传或者下载,如果是,直接进行copy 操作)pod 'LCCFileService'github地址上传第一步:添加下载器 _netService = [[LCFileNetService alloc] init]; [_netService原创 2021-11-29 15:10:22 · 5507 阅读 · 0 评论 -
判断手机的的IP在不在中国
开源库:LCCChinaIPpod 'LCCChinaIP'1. 获取IP地址获取IP地址见:1.加载中国地址原创 2021-11-24 18:18:50 · 757 阅读 · 0 评论 -
获取手机的IP地址
swift/// 获取本地IP 地址,可能是局域网的地址 @objc public static func getIphoneIpAddress() -> String{ var addresses = [String]() var ifaddr : UnsafeMutablePointer<ifaddrs>? = nil if getifaddrs(&ifaddr) == 0 { var ptr =原创 2021-11-24 17:50:48 · 2764 阅读 · 0 评论 -
自定义组件化Pod资源加载
第一步:添加资源将资源放到LCCChinaIP/Assets目录文件下,我这里添加的资源为IPSource.bundle我的工程叫:LCCChinaIP,通过pod lib create LCCChinaIP 会自动生成这样的一个文件夹第一步:配置podspec s.resource_bundles = { 'LCCChinaIP' => ['LCCChinaIP/Assets/*'] }这样的配置会在安装包理自动生成一个LCCChinaIP.bundle 资源包,里面就原创 2021-11-24 17:23:32 · 961 阅读 · 0 评论 -
关于OC+Swift 混编的单元测试的配置
https://medium.com/if-let-swift-programming/ios-tests-working-with-objective-c-and-swift-class-together-aaf40f91a27c原创 2021-05-14 18:40:17 · 218 阅读 · 0 评论 -
iOS苹果原生系统推送通知
准备工作下载推送测试程序SmartPush ,并用xcode 运行安装创建工程对应的推送证书,一个是Apple Push Notification service SSL (Sandbox) 和Apple Push Notification service SSL (Sandbox & Production),前者只能给开发者用Xcode安装的app推送,后者可以给所有app推送开发获取权限并申请device token- (void)notification:(UIApplica原创 2021-01-06 18:12:18 · 1115 阅读 · 0 评论 -
iOS组件化,私有库搭建
摘要iOS 中,我们经常使用pod ,同时也可以使用组件化开发的方式对代码进行物理隔离,让工程底层彻底解耦,当然自己的工程代码肯定不能上传到公共库上,所以本篇文章描述如何搭建一个自己的私有库准备工作:创建远程私有库的索引库 https://gitee.com/L63C/l63Specs.git git@gitee.com:L63C/l63Specs.git开始创建创建远程私有库 https://gitee.com/L63C/owt_ios.git git@原创 2021-01-06 09:32:46 · 1402 阅读 · 0 评论 -
GCD IOS程序等一会在执行,延时执行
// GCD dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 移除遮盖 [MBProgressHUD hideHUD];原创 2016-02-18 16:08:56 · 284 阅读 · 0 评论 -
oc截屏
// 开启上下文 UIGraphicsBeginImageContextWithOptions(_paintView.bounds.size, NO, 0.0); // 获取当前上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 把画板上的内容渲染到上下文 [_paintView.layer rende原创 2017-06-01 14:23:28 · 421 阅读 · 0 评论 -
oc 仿微信摇一摇
//微信的摇一摇是怎么实现的~发现原来 ios本身就支持//在 UIResponder中存在这么一套方法- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);- (void)motionEnded:(UIEventSu原创 2017-06-01 14:48:11 · 262 阅读 · 0 评论 -
CALayer关闭隐式动画
[CATransaction begin]; [CATransaction setDisableActions:YES]; self.myview.layer.position = CGPointMake(10, 10); [CATransaction commit];原创 2017-06-04 15:59:51 · 4544 阅读 · 0 评论 -
正确使用Block __weak __strong
转载,原文: http://blog.lessfun.com/blog/2014/11/22/when-should-use-weakself-and-strongself-in-objc-block/ 当然有一个更详细的专题: http://tanqisen.github.io/blog/2013/04/19/gcd-block-cycle-retain/Objective C 的 B转载 2017-10-19 15:24:05 · 1471 阅读 · 0 评论 -
关于线程的操作
关于iOS 线程的操作,推荐看下面的几篇文章,整理的特别清晰iOS 多线程:『pthread、NSThread』详尽总结iOS 多线程:『GCD』详尽总结iOS 多线程:『NSOperation、NSOperationQueue』详尽总结iOS 多线程:『RunLoop』详尽总结...转载 2018-12-24 10:40:46 · 114 阅读 · 0 评论 -
IOS内存分区
代码区存放编译后的执行代码常量区存放常量字符串,只读。eg: @"123"全局区/静态区分为数据区(已初始化)的和BBS区(未初始化) 两部分。主要存放全局变量和静态变量。eg:static NSString str2 = @"string"堆 (heap)需要自己动态的申请创建、管理、释放内存。大小不固定,内存分配由系统完成。内存地址,由低到高延伸。eg:函数中定义: [N...原创 2018-12-25 11:24:52 · 308 阅读 · 0 评论 -
NSOperationQueue 创建线程
NSInvocationOperation 创建线程// 创建队列 NSOperationQueue *queue = [[NSOperationQueue alloc] init]; // 创建操作 NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self sel原创 2017-06-05 01:09:31 · 357 阅读 · 0 评论 -
队列组处理网络图片合成/水印
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // 1.队列组 dispatch_group_t group = dispatch_group_create(); dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUE原创 2017-06-05 00:54:23 · 396 阅读 · 0 评论 -
如何创建一个控制器
1.直接创建HMViewController *hm = [[HMViewControlleralloc] init];2指定xib文件来创建HMViewController *hm = [[HMViewControlleralloc] initWithNibName:@”HMViewController"bundle:nil];3.先加载storybo原创 2016-02-18 21:16:55 · 499 阅读 · 0 评论 -
xcode7新建分类
正如上图看看就明白了原创 2016-03-04 16:27:51 · 276 阅读 · 0 评论 -
重新调用drawRect方法
[self setNeedsDisplay];原创 2016-03-04 16:24:16 · 710 阅读 · 0 评论 -
自定义圆形进度条,绘制进度条
// // HMProgressView.m // 02-下载进度条 // // Created by apple on 14-9-2. // Copyright (c) 2014年 itcast. All rights reserved. //#import “HMProgressView.h”@interface HMProgressView()@property (nona原创 2016-03-04 16:22:35 · 314 阅读 · 0 评论 -
ios屏幕底部弹出提示
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"是否注销?" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"注销" otherButtonTitles:nil, nil]; [sheet showInView:self.view];原创 2016-02-18 14:12:46 · 1189 阅读 · 0 评论 -
监听到UITextField的文本文字改变的3种方法
// 1.代理// _accountField.delegate = self; // 2.通知// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification obje原创 2016-02-18 11:19:45 · 588 阅读 · 0 评论 -
UITextField
当用户开始编辑一个文本框的时候,首先会调用这个,看是否允许编辑这个文本框- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ return NO;} 当用户结束编辑一个文本框的时候,首先会调用这个,看是否允许结束编辑这个文本框- (BOOL)textFieldShouldEndEditing:(UITextField *)tex原创 2016-02-18 10:45:14 · 227 阅读 · 0 评论 -
Missing iOS Distribution signing identity for
问题描述今天准备打包上传AppStore,结果Xcode报以下错误:Missing iOS Distribution signing identity for XXXXXX查看证书后发现,Develop证书和Distribution证书都提示“此证书的签发者无效”。什么是AppleWWDRCA证书?搜索资料发现,原因是AppleWWDRCA (A转载 2016-02-17 18:23:24 · 286 阅读 · 0 评论 -
NSAttributedString描述
/* 字符属性字符属性可以应用于 attributed string 的文本中。NSString *const NSFontAttributeName;(字体)NSString *const NSParagraphStyleAttributeName;(段落)NSString *const NSForegroundColorAttributeName;(字体颜色)NSString *const原创 2016-03-02 17:31:48 · 223 阅读 · 0 评论 -
MBProgressHUD 网络卡的时候小聚会,或Toast 或弹出提示 第三方库
MBProgressHUD 网络卡的时候小聚会,或Toast 或弹出提示 第三方库原创 2016-01-19 21:05:07 · 434 阅读 · 0 评论 -
IOS沙盒路径
Xcode 7 的沙盒路径为:模拟器沙盒路径:/Users/a625/Library/Developer/CoreSimulator/Devices/2CFF7AE1-CDA8-444D-AAA6-2D51C6FF31EA/data/Containers/Data/Application/9DFC4962-0D8E-4ADE-9803-D0B707E6ACDC/Documents原创 2016-02-19 16:57:10 · 366 阅读 · 0 评论 -
ios自定义归档解档
1.归档HMPerson *person = [HMPerson new]; person.age = 18; NSString *docPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; // 拼接文件路径 N原创 2016-02-19 17:41:47 · 355 阅读 · 0 评论 -
无NavigationBar到有NavigationBar视图切换
NavigationController在iOS App中是最常见不过了,可以说是每个App中必备的了。自iOS7开始,系统自带的右滑返回效果,也可以让有NavigationBar的视图切换很丝滑流畅。当然你也可能会遇到有些视图并没有NavigationBar(实际上是隐藏了),然后从这样的视图中push一个有NavigationBar的视图,这种需求很常见(姑且不讨论这种设计到底合不合适),实现转载 2016-02-20 15:59:01 · 323 阅读 · 0 评论 -
线程GCD
异步,同步,串行,并行/** * async -- 并发队列(最常用) * 会不会创建线程:会,一般同时开多条 * 任务的执行方式:并发执行 */- (void)asyncGlobalQueue{ // 获得全局的并发队列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORI原创 2017-06-05 00:46:30 · 353 阅读 · 0 评论