
iOS
SDWTJDW
一位程序员老爸
展开
-
WKWebView高度自适应
开发中经常会遇到WKWebView作为子视图在UIScrollView内部展示图文详情的请款,例如:图中,标题,作者头像昵称时间等都是原生,底部评论列表也是原生,只有中间部分是WKWebView,这时候获取WKWebView的contentSize.height就是关键了,但是在iOS里面如果我们通过webViewContentSizeObserver = webView?.observe(\.scrollView.contentSize,options: [.new,.old], changeHan原创 2022-01-10 10:10:33 · 2115 阅读 · 0 评论 -
Xcode中添加自定义字体
三步走:在 Info.plist文件中加入Fonts provided by application,填写文件名称加后缀。如图:前往TARGETS -> Build Phases -> Copy Bundle Resources,如果这里没有找到自定义字体,需要添加进去。可以使用了:UIFont(name: "FjallaOne-Regular", size: 40)...原创 2020-08-07 15:55:32 · 1349 阅读 · 0 评论 -
文件操作-路径操作
下面表格中的措施 可以用来操作 路径:措施名称描述+(NSString *)pathWithComponents:components用components创建有效的路径名称-(NSArray *)pathComponents将路径名称拆分成若干组成部分-(NSString *)lastPathComp原创 2014-05-30 14:09:43 · 626 阅读 · 0 评论 -
iOS 开发者必不可少的 75 个工具 - 博客 - 伯乐在线
(原文链接:http://blog.jobbole.com/46799/)转载 2014-05-30 14:07:25 · 711 阅读 · 0 评论 -
类方法、实例方法、静态方法
objective-c中非常重要的语法知识,在此归纳总结一下。 类方法,也称静态方法,指的是用static关键字修饰的方法。此方法属类本身的方法,不属于类的某一个实例(对象)。类方法中不可直接使用实例变量。其调用方式有三种:可直接调用、类名.方法名、对象名.方法名。实例方法指的是不用static关键字修饰的方法。每个实例对象都有自身的实例方法,互相独立,不共享一个。其调用方式只能是对象名.转载 2014-05-30 14:11:47 · 678 阅读 · 0 评论 -
C和OC如何混用
17.c和obj-c如何混用 1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码,处理mm文件可以识别obj-c,c,c++代码,但cpp文件必须只能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj-c的代码,因为cpp只是cpp 2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题 3)在cpp中混用obj-c其实就转载 2014-05-30 14:10:19 · 1776 阅读 · 0 评论 -
iphone开源项目list
iphone开源项目-----------------------UI界面类项目:Panoramagl—— 720全景展示Panorama viewerlibraryforiPhone, iPad and iPod touchMBProgressHUD—— 进度指示一种优雅的,半透明的进度显示效果。同时还提供了其他附加功能,比如显示完成信息并转载 2014-05-30 14:09:08 · 715 阅读 · 0 评论 -
Objective-C的Block(闭包),递归与泛型
OC的Block-----------------------Apple在C,Objective-C和C++中扩充了Block这种文法的,并且在GCC4.2中进行了支持。现在我们可以在Mac 10.6和iOS 4中使用。如果是Mac 10.6 或 iOS 4.0 之前的平台,据说可以用http://code.google.com/p/plblocks/这个项目来支持Block语法。转载 2014-05-30 14:08:38 · 886 阅读 · 0 评论 -
堆和栈
15.堆和栈的区别 管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。 申请大小: 栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如转载 2014-05-30 14:11:02 · 608 阅读 · 0 评论 -
iphone常用开源类库
iphone第三方类库-----------------------因为iOS SDK相对比较底层,所以开发者就得受累多做一些体力活。不过幸运的是,有很多第三方的类库可以用来简化很多不必要的工作。整理了一下在本人学习过程中用到的一些比较有用Objective-C开源类库,既是做一个总结,同时也希望通过这些分享,能提高各位的开发效率。KissXml——xml解析库相关教程转载 2014-05-30 14:08:10 · 652 阅读 · 0 评论 -
再看AFNetworking学习
对于BOOL值,一般会设置一个getter,形如:@properry(readonly,nontomic,getter= isNetworkActivityOccurring) BOOL networkActivityOccurring;对于可能会被多个类同时使用的属性,可以使用@synchronized达到类似锁的功能:- (BOOL)isNetworkActivityOccu...原创 2019-07-11 09:38:42 · 149 阅读 · 0 评论 -
iOS关于H5和原生页面交互
H5页面调用原生页面,首选JavaScriptCore,JSContext搭配JSExport:- (void)setupJsContent{ //获取当前JS环境 JSContext *_content = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; ...原创 2019-07-11 09:42:34 · 224 阅读 · 0 评论 -
iOS修改UserAgent
由于特殊需求,有时候需要给UserAgent添加相应的内容,一般都是尾部添加:-(void)registUserAgent{ UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero]; NSString *oldAgent = [webView stringByEvaluatingJavaScriptFro...原创 2019-07-11 09:50:57 · 449 阅读 · 0 评论 -
关于小程序打开app传参问题
小程序打开app分两种情况:app直接打开微信小程序之后的返回appWXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];launchMiniProgramReq.userName = userName;launchMiniProgramReq.path =path;launchM...原创 2019-07-11 09:51:52 · 1314 阅读 · 0 评论 -
__block使用
__block说明符若想在Block语法的表达式中将值赋给在Block语法外面声明的局部变量,需要在自动变量前面附加__block说明符。 __block int val = 0; void (^blk)(void) = ^{val = 1;}; blk(); printf("val = %d\n",val);当截获的是Objective-C对象,调用变更该对...原创 2019-07-11 09:52:59 · 155 阅读 · 0 评论 -
使用iResign重签ipa
当我们使用app store或者其他来源得到的ipa,特别是一个app store的ipa,如果想安装到自己的手机上,是不能直接安装的。有时候我们想用企业证书测试分发一个已经上架app store的ipa,不修改bundle id是不能直接安装的。这个时候就需要重签名。我遇到情况是,公司的app已经上架app store,这个时候公司需要改账号,变成企业账号,如果直接换过去,那很多第三方的统计、推...原创 2019-07-11 09:53:55 · 565 阅读 · 0 评论 -
自定义pop手势
自定义手势步骤:UINavigationController禁止系统的右滑返回手势,添加Pan手势NavigationInteractiveTransition作为Pan手势的target,实现Pan的action,在action里实现动画进度的更新;实现UINavigationControllerDelegate的关于动画和动画进度的代理方法NavigationInteractiveTr...原创 2019-07-11 16:35:19 · 255 阅读 · 0 评论 -
__kindof和__covariant
我们经常看到OC中的泛型是这样的:// 实例化一个元素类型为`NSString`的数组NSArray <NSString *> *array = [NSArray new];// 或者字典NSDictionary <NSString *, NSNumber *> *dict = @{@"manoboo": @1}这里的类型都是写死的,我们可以使用__covari...原创 2019-07-30 16:10:33 · 193 阅读 · 0 评论 -
WKWebView与H5交互坑
由于项目中使用的一直都是UIWebView遇到了性能问题,一遇到新闻详情页面内容超级多的时候就会加载慢,滑动卡顿的情况。无奈只能使用WKWebView。需要使用到的是WKScriptMessageHandler: WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init]; [co...原创 2019-07-22 10:17:56 · 392 阅读 · 0 评论 -
Quartz Core图层编程
Quartz Core图层编程一、添加 Quartz Core 框架要使用 Quartz Core 框架,你需要将其添加到你的工程中 。 然后 #import <Quartz Core/QuartzCore.h> 二、 认识图层对 ps 有所了解的人都知道图层的概念,在这里也一样。在PS中一张图片至少得有一个图层,一个或多个图层的叠加构成了一张位图。我们这里一个或多原创 2014-05-23 14:10:39 · 587 阅读 · 0 评论 -
UIScrollView、UIPageControl
UIScrollView、UIPageControlUIScrollView提供了能在一个界面看到所有内容的方法,可以滚动查看。常用属性和方法:delegate,代理,定义了视图滚动,缩放,触摸等操作的方法,其中没有必须执行的方法。如果要实现一些代理里面的一些效果就需要使用代理。pagingEnabled,BOOL值,设置或读取整页翻转,也就是一页一页的效果。原创 2014-05-23 14:08:41 · 560 阅读 · 0 评论 -
系统的编辑按钮设置成中文
1、当我们把使用的navigationItem设置为系统的编辑按钮时候,上面的title是英文的要改成中文的话需要以下操作//cell可以被编辑-(void)setEditing:(BOOL)editing animated:(BOOL)animated{ [super setEditing:editing animated:animated];原创 2014-05-23 14:18:01 · 751 阅读 · 0 评论 -
多线程
NSThread: 代表执行的线程,可以使用该类的对象封装线程操作。 NSOperation: 定义了任务的执行环境、状态等基本属性,继续该类来指定具体的操作,通常情况下,编写NSOperation的 子类来定义具体的操作。 0 NSInvocationOperation: NSOperation的子类,可以指定操作方法。 NSOpera原创 2014-05-23 14:16:47 · 457 阅读 · 0 评论 -
CALayer、CGAffineTransform
CALayer、CGAffineTransform可以看做显示图像的实际上是layer层。CALayer其中的三个动画的类:1.CAAnimation创建一个CALayer层的动画,并且可以被layer调用addAnimation: forKey添加到自己的CALayer层动画,还可以设置动画开始和结束的代理方法。2.CAPropertyAnimation这原创 2014-05-23 14:02:25 · 1163 阅读 · 0 评论 -
关于触摸
关于触摸 float red = arc4random()%256/255.0; float green = arc4random()%256/255.0; float blue = arc4random()%256/255.0; self.backgroundColor = [UIColor colorWithRed:red green:g原创 2014-05-23 14:05:28 · 510 阅读 · 0 评论 -
UIView
UIView[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(showBeautifulChanges:) userInfo:bgView repeats:YES];这里的bgView是由定时器传给某方法的信息,也就是说在某函数中用到showbeatifulChanges:这原创 2014-05-23 14:04:01 · 501 阅读 · 0 评论 -
UITabBarController
UITabBarController1.它是用来组织用户并排界面 2. 工作原理:UITabBarController被用来控制几个切换器的切换以及TabBar中按钮的状态绘制,和通常的选项卡相似,只不过TabBar 一般在下面显示;点击哪个TabBar就出现相关联的控制器,如果这个控制器有自己的view,那么这个和view就会被显示出来3.3个常用属性:title设置tab现实的名称;ima原创 2014-05-23 14:01:05 · 661 阅读 · 0 评论 -
cocoa touch框架
iPhone OS 应用程序的基础 Cocoa Touch 框架重用了许多 Mac 系统的成熟模式,但是它更多地专注于触摸的接口和优化。UIKit 为您提供了在 iPhone OS 上实现图形,事件驱动程序的基本工具,其建立在和 Mac OS X 中一样的 Foundation 框架上,包括文件处理,网络,字符串操作等。 Cocoa Touch 具有和 iPhone 用户接口一转载 2014-05-23 14:00:00 · 1111 阅读 · 0 评论 -
数据持久化之数据库
数据持久化之数据库数据库是数据持久化最重要的方式,也是开发中最常用的方式。数据库的最大特点就是增、删、改、查,便于复杂数据的统一管理以及灵活使用。需要导入库sqlite3.dylib。数据库的本质是一个文件,存储于硬盘之上。数据库流程:1.引入库sqlite3.0.dylib2.使用sqlite3.0dylib类对数据库进行操作3.使用sqlit原创 2014-05-23 14:06:16 · 651 阅读 · 0 评论 -
数据持久化之归档和属性列表
数据持久化之归档及属性列表1.文件比较复杂,对象也相对强大的时候使用这个。归档解决了自定义的类的存储问题。2.原理:将复杂的对象转换为NSData,然后写入到硬盘。为了读取的时候恢复写入数据,需要对数据进行编码和解码(1)NSCoding(编码和解码)(2)归档与反归档(写与读)3.自定义的类接受NSCoding协议,需要实现以下两个方法:-原创 2014-05-23 14:07:17 · 658 阅读 · 0 评论 -
iPad开发与iPhone开发有什么不同
开发iPad和iPhone应用使用的是相同的SDK,它们之间的区别主要体现在设备硬件和UI操作上。(1)设备硬件:由于iPad不具备电话功能,iPad1也没有相机,所以相关的特性如电话、SMS等无法使用。(2)UI操作:由于iPad屏幕大小为9.7英寸,而iPhone的屏幕是3.5英寸,这就决定了两者操作方式的不同。有些控件,如UIPopoverController, UISliptViewC原创 2014-05-23 13:59:18 · 726 阅读 · 0 评论 -
UITableView使用指南1
一、概述 UITableView是iOS开发比不可少也是最重要的一个控件类。可以说任何一个做iOS开发的人都必须熟练使用和掌握它。本文主要就是提供一个学习使用TableView的指南。 要说UITableView必须要介绍他的几个亲戚:UITableViewDelegate,UITableViewDataSource,UITableViewCell。其中前两个是TableView遵守的两个转载 2014-05-23 13:56:31 · 528 阅读 · 0 评论 -
数据持久化之文件读写
数据持久化之文件读写1.文件读写是最简单的数据持久化方式2.通常使用writeToFile:方法实现文件的写操作3.并不是所有的类都能使用这个方法,只有部分类提供读文件的方法类 写文件 读文件NSArray原创 2014-05-23 14:08:06 · 652 阅读 · 0 评论 -
CATransition动画
[UIView commitAnimations];[UIView beginAnimations:nil context:nil]; [UIView setAnimationRepeatAutoreverses:YES];//动画是否返回 [UIView setAnimationDuration:0.3]; button.alpha =0;[UIVi原创 2014-05-23 14:04:54 · 500 阅读 · 0 评论 -
照相机,短信、邮件、加速剂
UIImagePickerControllerSourceType有三个类型UIImagePickerControllerSourceTypePhotoLibraryUIImagePickerControllerSourceTypeCameraUIImagePickerControllerSourceTypeSavedPhotosAlbum使用照相机前要原创 2014-05-23 14:16:13 · 894 阅读 · 0 评论 -
图画、图片显示
画图、图片显示使用drawRect函数画图的步骤:1.获取上下文。这是固定格式CGContextRef context=UIGraphicsGetCurrentContext();其中context是自己随便取的上下文名称2.CGContextSetRGBStrokeColor(context, 0, 0, 1, 1);使用RGB给画笔设置颜色,其中前三个原创 2014-05-23 14:15:21 · 615 阅读 · 0 评论 -
UITextField、UILabel、UIButton
UITextField、UILable、UIButton使用UITextFieldDelegate协议回收键盘 //分析:回收键盘的核心代码是[textField resignFirstResponder];因此我们只需要在UITextFieldDelegate协议的某个方法里面写上上述代码就可以了。 //步骤:先为UITextField对象设置委托原创 2014-05-23 14:13:45 · 653 阅读 · 0 评论 -
UISegmentControl、UISlider、UIImageView
UISegmentControl、UISlider、UIImageViewUIImageView拥有的属性列举:1.userInterractionEnable BOOL值,读取或设置图片是否能与用户交互,响应用户事件。默认为:NO。2.animationImages 包含UIImage的NSArray集合。使用startAnimating方法可以播放原创 2014-05-23 14:13:01 · 828 阅读 · 0 评论 -
UINavigationController
UINavigationControllernavigationController 是一个用来表示不同视图之间的从属关系的控件,通过维护一个栈来实现不同从属关系的视图之间的切换。它不属于控件,继承于viewController, 它是一个集合了navigationBar,navigationView等的控制器。它是通过pushViewControlle原创 2014-05-23 14:09:50 · 528 阅读 · 0 评论