自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

知更鸟CoolLee的博客

在知识的海洋,飘荡。。

  • 博客(61)
  • 收藏
  • 关注

原创 Flutter中如何获取widget的大小和位置?

在我们实际的开发中,会有要获取某个widget的大小和位置的需求,但是widget本身并没有对应的属性获取size和position,怎么办呢?看官莫急,且往下看。我们首先创建一个demo工程,长的是这个样子,column中分别有三个不同颜色的widget,底部两个按钮,点击分别获取size和position:代码很简单: //获取widget大小 _getSize() { } //获取widget位置 _getPosition() { } ret

2020-09-30 10:42:22 7125 1

转载 使用NSProxy和NSObject设计代理类的差异

经常发现在一些需要使用消息转发而创建代理类时, 不同的程序员都有着不同的使用方法, 有些采用继承于NSObject, 而有一些采用继承自NSProxy. 二者都是Foundation框架中的基类 , 并且都遵守了这个协议, 从命名和文档中看NSProxy天生就是用来干这个事情的. 但即便如此, 它们却都定义了相同的消息转发的接口, 那我们在使用二者来完成这个工作时有什么差异呢.先贴一下通过二者来创建代理类的最基本实现代码.继承自NSProxy@interface THProxyA : NSProxy

2020-07-26 11:17:08 609

原创 Xcode编译报 library not found for -lstdc++ 问题

背景:最近在编译某第三方提供的SDK的时候,发现编译过不了,报错信息如下:提示library not found for -lstdc++,开始以为没有导入对应的库,可是添加的时候,根本搜不到这个library,一番度娘谷哥,发现libstdc++已经在xcode10被移除掉了,这怎么办,项目要编译,xcode也是11版本,难道没救了吗?功夫不负有心人,最终在这里,找到了解决办法,简单来说就是,虽然xcode移除了这个库,但是我们还可以再手动添加回来,当然除了自己找对应的库文件添加之外,作者把对应的库

2020-07-23 10:29:53 925

原创 Flutter彻底去除水波纹效果,不来看看?

如何彻底去除Flutter的水波纹效果?跟着我深入flutter源码去找到蛛丝马迹,完成最后的改造!

2020-07-15 22:36:52 5340

原创 Flutter如何设置文字大小不随系统设置而改变?

我们知道,在原生iOS开发中,一旦文字设置了font之后,是不会随着系统设置中的字体大小的改变而发生改变的。可是,在flutter开发中,我们使用的Text widget却会随着改变,这就会导致布局错乱,使得整个页面异常难看。首先,如果是针对单独的Text widget,系统提供了textScaleFactor属性,用于设置文字的缩放倍率Text( '(model.reason)', textScaleFactor: 1.0, maxLines: 1, overflow: Tex

2020-05-18 19:05:19 6025 2

原创 Building for iOS Simulator, but the linked and embedded framework 'App.frame'

在使用android studio运行flutter项目时,报如下错误:building for is simulator but the linked and embedded framework ‘app.framework’ was built for ios这是什么问题呢?其实是项目中已经存在的App.framework和当前编译的模式不一致。解决的办法很简单:删除 ios/Fl...

2020-05-06 20:28:07 15849 5

原创 iOS解除Block循环引用,你只知道__weak就out啦

在iOS的开发中,block是比较频繁的一个使用的功能。可是我们都知道,block如果使用不当,很容易引起循环引用,造成内存泄漏。今天为大家介绍几种解除block循环引用的方式,愉快的用起来吧!Answer 1 :最常规的方式 – weak & strong dance!我相信作为一个有一定开发经验的人都知道,想要防止循环引用,最关键的就是要打破引用链,即让两个相互强引用的对象,让其中...

2020-04-06 23:52:08 1465

原创 SwiftUI为啥可以这样写代码?

欢迎老铁们扫码关注哦!var body: some View { HStack(alignment: .leading, spacing: 10) { Text("Hello Swift") Text("Hello SwiftUI") Text("Hello SwiftUI Study") }}不知道大家有没有问过自己,为啥...

2020-03-13 08:37:19 528

原创 SwiftUI如何修改页面状态?@state的使用

在SwiftUI开发中流传一种说法:视图是状态的函数。这句话什么意思呢?我们在玩游戏的时候,死了几次,得到几分,收集了一些道具,或者捡到武器,在应用程序中,我们把这些称为state。当你退出游戏的时候状态都会保存,当你下次再进来游戏的时候可以接着上次的继续玩。不过在你玩的过程中,这些所有的东西都可以叫状态:所有的integers,strings,booleans等等,这些存储在内存中的值描述着你...

2019-11-28 15:52:42 3632 1

原创 SwiftUI系列之七--NavigationView, TabbedView, Group介绍

SwiftUI的设计就是开箱即用,这就意味着我们可以根据需要,将任意View放置到另一个View中。这一点对于我们常常使用的一些Container View是非常有用的,比如导航栏和底部tab栏。我们可以把任何一个View扔进Container中,SwiftUI会自动适应View的布局。本篇主要介绍这几种Container View:NavigationView, TabbedView, Gr...

2019-10-29 10:04:36 6921 2

原创 我到底应该学SwiftUI?UIKit?还是both?

最近有些朋友问我,我学Swift到底应该学SwiftUI还是UIKit也要学?哈哈,你是不是也在期待着这样的回答:all in SwiftUI吧,UIKit的内容不用管了!然鹅,如果你听了这话,那目前阶段甚至一两年内你都可能只是写一写玩玩的项目了。各位看官,且听我细说为啥不能all in SwiftUI吧。在解释之前,我需要说明一点:SwiftUI毫无疑问是一个很优秀的用户界面框架,而且100...

2019-10-24 21:12:41 4900

原创 SwiftUI--List View全攻略

SwiftUI的List View和UIKit中的UITableView很相似,它可以根据你的需求加载静态或者动态数据。不同的是,List使用起来更加的简单:我们不需要在storyboard或者Xib中创建cell,也不需要使用代码注册cell,不需要告诉它要有多少行内容,当然也不需要dequeue cell以及手动设置cell等等。一、创建一个静态数据列表想要创建一个静态数据列表,你首先需...

2019-10-23 15:20:14 10902

原创 SwiftUI系列之一--不要怕,搞起来

苹果公司在WWDC19上宣布了一个激动人心的消息,引入了SwiftUI–一个原生的声明式UI框架。这对于iOS开发习惯了命令式UI编写的猿们来说,是又兴奋又紧张,终于iOSer也可以赶上潮流,使用声明式的方式开发iOS、macos啦。当然小编是属于兴奋的那一种,这不迫不及待就来尝试SwiftUI开发了,接下来的一系列文章,会带领大家一起学习使用SwiftUI,大家加油!我们只需要声明想在UI中...

2019-10-17 10:17:53 1157 3

原创 iOS强迫症的福音--优雅的删除项目中无用的图片资源

随着产品的更迭,工程中的图片资源也在不断的更新换代。那么你是不是曾今为项目中的无用图片过多而脑阔疼?为一个个查找,删除这些图片而奔溃?你是不是有仰天长啸:神啊,告诉我如何优(yi)雅(jian)的删除项目中无用的资源吧?现在就让我来告诉你–FengNiao–一个删除Xcode工程中无用图片资源的神器!啥是fengniaoFengNiao一个命令行工具,由iOS界的大神onevcat喵神使用...

2019-08-16 11:57:06 1677

原创 iOS和Flutter混编系列二:混编后如何restart/reload&调试Flutter代码

开篇:上一篇为大家介绍了如何将flutter工程嵌入到iOS原生工程中iOS和Flutter混编系列一:如何在已有的iOS工程中添加Flutter工程本次分享的内容是:混编后如何针对flutter部分的代码进行restart/reload 操作以及调试代码。flutter支持热重载,我们如果进行过纯flutter开发,就知道flutter的restart/reload 是非常方便的。re...

2019-08-08 19:20:07 1964 1

原创 iOS和Flutter混编系列一:如何在已有的iOS工程中添加Flutter工程

开篇:flutter是什么就不多做介绍了,目前使用纯flutter进行开发的大型项目还比较少,多数试水的还是打算和现有的原生代码进行混编,即将flutter页面嵌入到原生app中。而网上大部分都是讲安卓和flutter混编的经验,有iOS和flutter混编的也是比较老的方法,现在已经不再适用,这两天尝试了一下最新的方式,记录一下,希望大家少走弯路。正题:以下内容都是按照官方给出的方案进行...

2019-08-08 18:15:03 7208 4

原创 Lottie动画使用及原理分析

目录结构:1.Lottie是什么?2.为什么使用Lottie?3.Lottie适用于哪些场景?4.Lottie的使用和原理1.Lottie是什么?Lottie是Airbnb开源的一个动画渲染库,支持多平台,包括iOS、Android、React Native以及Flutter(https://github.com/airbnb/lottie-ios)。除了官方支持的平台,更...

2019-06-05 10:36:48 7365

原创 iOS底层原理探究之----KVC

不管是平常开发还是找工作面试中,KVC、KVO的原理都是面试官比较喜欢问的问题。最近抽时间研究了一下KVC和KVO的实现原理,本想着一篇文章就可以说完,等研究完才发现不看不知道,一看吓一跳。KVC和KVO都有很多内容可以研究,故分为两篇分享,第一篇分享KVC的底层原理。本次分享准备从这几个方面...

2019-01-14 18:18:57 591

原创 iOS开发之为线程加把锁

在iOS开发中,不可避免的需要使用到多线程。但是使用多线程的过程中,如果使用不当,就会造成数据混乱,那要怎么保证多线程使用中不会因为访问同一个内存空间而造成数据混乱呢?这个时候锁(LOCK)就该闪亮登场了。本文会从以下几个方面介绍锁,希望对大家有帮助:1)锁是什么以及为什么需要?2)iOS中都有哪些锁?3)锁的使用?- 锁是什么以及为什么需要?锁是一种保证多线程并发执行安全的方式,避免...

2019-01-09 16:20:22 2000

翻译 iOS创建一个底部sheet(类似iPhone地图)

(本文是自己的翻译,感兴趣的可以查看原文,原文链接:https://skagedal.github.io/2018/08/03/bottom-sheet.html)BottomDrawer或者叫BottomSheet作为一种用户交互模式已经在iOS使用的越来越频繁,经常出现在苹果自己的APP中,比如Apple Music和Maps。但是尽管如此,却一直没有一个标准组件可以让开发者直接使用。在这...

2018-08-21 15:54:30 2810

原创 iOS UITextView问题一网打尽(占位文字、汉字输入字数计算、自动高度改变)

在iOS开发中,UITextView是一个使用还算比较多的控件。但是用过的人都知道,UITextView有很多存在的问题,今天就来一一说它一说。一、设置textView的placeHolder首先需要解决的就是占位文字placeHolder的问题,与UITextField相比,UITextView并没有相应的placeholder属性设置占位文字,但是可以通过category的方式给t...

2018-08-13 20:46:58 1732

原创 iOS UITextView设置初始输入位置

有时候我们希望textView不从最开始的位置输入,这时就需要对textView进行设置,那应该设置哪个属性呢? 实测:设置textView的textContainerInset可以实现改变输入位置的需求。它设置的是输入文字相对textView本身的距离。 textView.textContainerInset = UIEdgeInsetsMake(7, 16, 0, 16); 另:也尝试设...

2018-06-08 17:18:20 4668

原创 Mac升级自带python到最新版本有轻功

Mac电脑自带python,但是一般都是python的低版本,如今越来越多的人转向了python3,故而很有必要将其升级,但是mac有些软件是依赖于自带python的,所以不建议删除之前的老版本,而是让老版本和新版本共存。以下为最简单步骤: 1.到python官网下载页面下载最新的python版本(或者自己需要的版本)到本地 2.下载完成后,打开下载的pkg包按照步骤一路点确定,不需要自己修改...

2018-04-26 21:49:55 24424 21

原创 最简单方式解出线上app中Assets.car的图片资源

有时候我们会有这种需求:下载的别人开发的App,想提取到里面包含的所有图片文件,但是下载的包里面我们直接能看到的图片却是很有限的。而这里面还有一个比较大的文件那就是Assets.car,那么它是什么呢?实际上这就是我们平常开发中放在Assets.xcassets中的图片资源。这里要讲的就是如何用最简单的方式取出Assets.car中的图片文件。首先到github下载cartool(没错,这就是...

2018-03-05 16:06:09 12240 1

原创 tableview图片延迟加载的骚操作~

现在有这样一个场景,有一个tableview,每个cell上都有imageView,imageView要加载图片,用户在滑动列表的时候,如果随滑随加载图片的话,列表会非常卡顿,验证影响用户体验。这个时候应该怎么优化呢?方法一:利用UIScrollView的代理方法。在tableView滑动的过程中不加载图片,等停止滑动时再加载当前可见cell上的图片。这种方法是比较容易想到的优化方式,但是实现...

2018-02-11 17:10:37 1390

转载 iOS App 签名的原理(转)

iOS 签名机制挺复杂,各种证书,Provisioning Profile,entitlements,CertificateSigningRequest,p12,AppID,概念一堆,也很容易出错,本文尝试从原理出发,一步步推出为什么会有这么多概念,希望能有助于理解 iOS App 签名的原理和流程。目的 先来看看苹果的签名机制是为了做什么。在 iOS 出来之前,在主流操作系统(Mac/Wi

2018-02-07 14:53:23 1186

转载 ios-阿里P6面试题(转)

http://www.cocoachina.com/ios/20171129/21362.html 确实不愧是阿里的面试题,很多题看着很基础,有很多可以答的,但是真的要说的很全面,很准确还是有很高的难度。更多的偏向于原理和底层,尽管我们不一定能去阿里面试,但是作为技术人员,要时刻保持学习的心态才能成长,共勉!

2017-12-01 11:50:29 2967

原创 iOS应用状态保存和恢复

应用场景: 当程序进入后台时候,把用户当前查看的页面层级保存起来,如果应用停止运行,那么用户在下次打开应用的时候,可以按照之前保存的状态恢复现场,让用户看起来仿佛从来没有关闭过一样。 实现步骤: 1.首先在AppDelegate中实现如下方法: - (BOOL)application:(UIApplication )application shouldRestoreApplicationSt

2017-08-31 17:34:44 1551

原创 ios中修改状态栏颜色的方法

工作中会经常遇到需要修改状态栏显示的颜色,实践发现,修改其实很简单,只需要在项目的infoPlist文件中添加一项:View controller-based status bar appearance,添加后,它的默认值就是NO,表示由系统管理状态栏,此时在AppDelegate中添加如下代码:[UIApplicationsharedApplication].statusBarStyle =UIS

2017-08-01 21:55:33 2098

原创 解决Line XX:StartTag:invalid element Name问题

多人开发修改同一个文件,提交git后再拉取容易产生问题,今天就遇到了一个问题:合并完代码后,运行就会直接报Line 19:StartTag:invalid element Name这个错误。研究一下发现是我和同事同时修改了同一个xib文件,出现以上问题,解决办法如下: 鼠标右键点击报错的xib文件–》选择open As–》选择source Code–》在打开的源码中删除合并冲突的东西,然后点击运行

2017-07-12 15:12:21 5205

原创 不仅仅是截图--截取整个scrollView的内容

以下的方法,非常简单的实现截取整个scrollView控件及其子控件的内容,比如tableView等,并生成一张图片。不仅仅是我们可以看到的一屏大小的内容。- (UIImage *)screenShotImageOfScrollView:(UIScrollView *)scrollView{ UIImage* image = nil; //获取图片 UIGraphicsBeginIm

2017-07-10 16:24:18 2627

原创 iOS使用socketIO实现长连接

iOS使用socketIO实现长连接

2017-06-08 19:57:17 12562 3

转载 iOS使用webSocket的简单实现

最近做K线图相关的东西,需要和服务器进行长连接实时获取数据,因为后台使用webSocket实现的,经过一番波折最终找到了facebook开源的 SocketRocket 框架,他是用oc封装的websocket实现,这篇是在网上找到的使用SocketRocket的例子,感觉写的不错,但是看完也就是个入门,如果要实现自己的长连接,肯定还是需要一番折腾的。 原文链接:http://www.cocoac

2017-06-06 19:41:43 11466 1

原创 iOS截屏分享功能实现

产品经理今天提出一个新的需求,需要实现类似于每日优鲜、淘宝等客户端的截屏分享的功能,即home+power截屏后弹出分享页面,同时将截取到的图片放在当前页面中展示,如下效果: 之前没有做过这样的需求,但是实现过截屏相关的功能,故初步考虑获取系统截屏事件,然后在该事件中利用程序截屏并按一定比例显示在屏幕上,最后在该事件中调用友盟分享的方式实现了。 首先第一步是考虑如何获取系统截屏的事件,查找之

2017-05-02 19:28:59 11869

原创 ios 为APP设置App Store中的兼容性问题

最近发现,我们的APP发布到App Store后我发现在兼容性上为: 需要ios8或更高版本。与iPhone、ipad、iPod touch兼容 我擦嘞,这不对呀,我们开发的APP只是针对iPhone的呀,这和ipad、iPod touch兼容并没有啊,App Store上显示成这样,肯定会误导用户啊,怎么破?然后就是一堆百度,可能是我百度的姿势不对,始终没有找到改变这种兼容性的方

2017-04-13 19:48:00 11604

原创 OC代码中使用Swift文件的实践

最近在研究swift,就我看来,swift确实是比OC更优秀的语言,这可以体现在很多方面,网上已经对比的很透彻,就不一一赘述。 今天研究了一下如何在OC项目中使用swift文件,即OC和swift的混编问题,发现在OC中要使用swift文件也是蛮简单的,实践过程列如下: 1)首先随便创建了一个OC项目,就叫 DetialViewDemo 2)因为Swift的代码默认是使用module管理的

2017-04-12 20:11:58 8552 3

原创 iOS Charts 混合柱状图开发

近期公司的产品有新的需求,大概效果就如下所示: 我们使用的是ios-charts这个第三方,但是在网上找了一大堆也没有发现这种效果的柱状图,没办法只能自己操刀来实现了。实现过程中借鉴了安卓中的MPCharts类似效果的实现方法,话不多说,直接上代码,代码中注释已经比较清晰了,有不懂得欢迎咨询。 我是写了一个这种效果实现的工具类,在.h文件中申明方法:/** 两根柱子以及折线的混合显示 @par

2017-04-05 13:38:27 7784 1

原创 iOS获取当前设备的型号、分辨率、运营商以及地理位置

最近做一个需求:后端需要统计使用我们APP产品的用户手机的各种信息,这些信息包括:设备品牌、设备型号、设备分辨率、操作系统、运营商、APP版本号、设备ID(UUID)、地址位置。这些信息其实获取也都不是很难,简单记录一下://首先获取当前设备对象 UIDevice *device = [UIDevice currentDevice];

2017-03-21 18:19:27 5319 1

原创 使用UIBezierPath和CAShapeLayer高效为UIView添加圆角

我们在实际开发中,经常会遇到为某个view添加圆角的需求,这样出来的view的效果是比较好看的,那么平时用的最多的实现方式是什么呢?或许你也和我一样:UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 200, 40)]; btn.layer.cornerRadius = 5; btn.clipsToBou

2017-02-16 10:26:51 5314

原创 cell高度自适应实现的最简单方式

曾经为了实现cell的高度自适应,不知道吃了多少苦。那个时候,是在我的数据模型model中添加一个height属性,实现它的get方法,在get方法中计算需要多行显示文字的高度,然后再加上其他乱七八糟的高度并返回,然后在tableview的 - (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexP

2017-01-05 16:10:37 12178

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除