iOS备忘录
iChenwin
这个作者很懒,什么都没留下…
展开
-
视图控制器生命周期(ViewController Lifecycle)
斯坦福公开课第五课5. View Controller Lifecycle.mp4总结了View Controller的生命周期。如图:原创 2016-08-10 09:17:06 · 900 阅读 · 0 评论 -
UITableViewCell左滑多选项
- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewRowAction *likeAction = [UITableViewRowAction rowActionWit原创 2016-11-09 22:58:22 · 493 阅读 · 0 评论 -
AFNetworking等待网络请求,继续同步操作
在发出网络请求后,需要拿到网络返回的数据才能继续后续操作,这时可以用dispatch_semaphore_wait- (id)sendForUrl:(NSURL *)url { AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.completionQueue原创 2016-11-09 23:04:11 · 3471 阅读 · 0 评论 -
NSDate和NSString相互转换
NSDate到NSString的转换://获取系统当前时间NSDate *currentDate = [NSDate date];//用于格式化NSDate对象NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//设置格式:zzz表示时区[dateFormatter setDateFormat:@"yyyy-MM原创 2016-11-09 23:09:20 · 508 阅读 · 0 评论 -
设置NavigationBar导航栏中返回按钮(BackBarButtonItem)和BarButtonItem文字
1. 后退按钮BackBarButtonItem的title设置想要导航栏中后退按钮(带箭头,BackBarButtonItem)和BarButtonItem的文字,折腾了一会,试了几种方法都不奏效,最终找到了个解决办法。 如果APP通过navigationController从A视图跳转至B视图,导航的返回按钮的加载原理是这样的: 1、如果B视图有一个自定义的左侧按钮(leftBarBu原创 2016-10-20 17:13:27 · 8254 阅读 · 0 评论 -
单指移动光标手势,双指修改文本选区手势
UIView通过实现UITextInput协议,实现单指移动光标手势,双指修改文本选区手势。#import "ViewController.h"#import "JSWebView.h"#import "UIView+Constriant.h"#import "JSInputView.h"#import "UIResponder+FirstResponder.h"#import "NSOb原创 2016-12-07 14:35:15 · 590 阅读 · 0 评论 -
Share Extension调试
最近添加原生扩展功能,如图: 而在当前Xcode8.2.1中,扩展的NSlog无法显示在Xcode中,最后从Stackoverflow得知,可以打开Mac的console.app查看在手机上的打印。另:- (void)didSelectPost {}中必须以[self.extensionContext completeRequestReturningItems:@[] completionHan原创 2017-02-23 20:59:04 · 1346 阅读 · 0 评论 -
WWDC2014之App Extensions学习笔记
一、关于App Extensionsextension是iOS8新开放的一种对几个固定系统区域的扩展机制,它可以在一定程度上弥补iOS的沙盒机制对应用间通信的限制。extension的出现,为用户提供了在其它应用中使用我们应用提供的服务的便捷方式,比如用户可以在Today的widgets中查看应用展示的简略信息,而不用再进到我们的应用中,这将是一种全新的用户体验;但是,extens转载 2017-02-23 21:01:56 · 463 阅读 · 0 评论 -
移除字符串NSString中的特定字符
如果要移除NSStringni'hao shi'jie中的单引号,那么可以使用这条语句:NSString *stringWithoutQuotation = [myString stringByReplacingOccurrencesOfString:@"'" withString:@""]; 也可以使用这条语句:NSString* noQuotation = [[myS原创 2017-02-03 22:24:06 · 9854 阅读 · 0 评论 -
Objective-C中使用extern引用外部全局变量(如:创建全局可变字符串)
使用extern可以创建外部文件可以访问的全局变量。这样我们可以让多个类操控同一变量。通过它可以实现全局可变字符串。extern的使用方法: 1. 在需要初始化该变量的文件(如:func.m)中,定义变量NSMutableString *globalString;(注:需定义在@interface和@implementation之外) 2. 在需要用到这一变量的另一文件中使用extern NSM原创 2017-02-03 22:13:52 · 8421 阅读 · 1 评论 -
UICollectionView的Cell加载动画
-(void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath {// CGAffineTransformMake(a,b,c,d,tx,ty)// ad缩放原创 2017-03-10 16:24:06 · 5032 阅读 · 0 评论 -
显示NavigationController/NavigationBar和完成返回动作
在要跳转至下一个ViewController处,创建一个NavigationController,并将下一个VC作为它的根VC,然后显示NavigationController(NavigationController中只有一个VC,所以也就是显示下一个VC): NextViewController *vc = [[NextNViewController alloc] init]; U原创 2017-03-30 16:37:53 · 1678 阅读 · 0 评论 -
iOS系统音量控制——MPVolumeView
iOS的音量控制接口在MediaPlayer库中, 1. 首先要将该库导入: 2. 然后在用到的地方引入MPVolumeView的头文件: #import 3. 而MPVolumeView中负责控制音量的是它的子视图MPVolumeSlider,而这个类并未对外公开,所以要去控制它,需要遍历volumeView的子视图,把它找出来原创 2017-05-15 17:39:50 · 8628 阅读 · 0 评论 -
让SVProgressHUD提示框自动消失
SVProgressHUD是一个第三方提示器框架。现在想实现提示框一秒后自动消失的效果,便有了// 可以自动消失[SVProgressHUD showInfoWithStatus:@"数据加载完毕!"];[SVProgressHUD showSuccessWithStatus:@"成功加载到4条新数据!"];[SVProgressHUD showErrorWithStatus:@"网络错误,请稍等!"];原创 2016-09-13 00:05:03 · 15317 阅读 · 2 评论 -
NavigationBar返回按钮设置
NavigationBar中返回按钮的设置,要在父视图中完成,假设A视图(AViewController)包裹在导航视图中(NavigationVC),它通过pushViewController将B视图(BViewController)压入栈中,要想更改B视图的返回按钮,需在A视图中添加设置代码:UIBarButtonItem *backItem = [[UIBarButtonItem alloc原创 2017-05-19 16:25:21 · 3931 阅读 · 0 评论 -
给UIView/UIButton添加虚线边框
要给UIButton等视图加一圈虚线边框,这里是其中一种方法,就是在原来的视图的layer上再添加一层CAShapeLayer,在这一层中使用贝塞尔曲线UIBezierPath的lineDashPattern创建虚线边框。原创 2017-05-22 14:34:46 · 4654 阅读 · 0 评论 -
ViewController跳转后导航栏会发黑
视图控制器之间跳转,在加载新视图控制器时,导航栏底色会闪一下,是黑色一闪而过。 可以通过: self.navigationController.view.backgroundColor = [UIColor whiteColor]; 或 self.navigationController.navigationBar.translucent = NO; 解决。栈溢出的讨论:stackover原创 2016-11-09 22:33:45 · 3558 阅读 · 0 评论 -
添加和移除子视图控制器(child ViewController)
// add child viewController UIViewController* controller = [self.storyboard instantiateViewControllerWithIdentifier:@”test”]; [self addChildViewController:controller]; controller.view.fr原创 2016-11-08 11:30:01 · 12934 阅读 · 0 评论 -
UIView的重绘机制——drawRect
斯坦福公开课第七课.Views and Gestures,提到了UIView的重绘函数drawRect,其中用到了UIBezierPath类来创建基于矢量的路径,基本用法:原创 2016-08-18 10:08:26 · 661 阅读 · 0 评论 -
NavigationBar导航栏透明
想要得到导航栏透明的视图(ViewController),效果如下图: 而默认情况下,导航栏是这样的: 想要让导航栏透明,可以这样实现:原创 2016-08-12 18:49:57 · 600 阅读 · 0 评论 -
根据字符串长度动态计算UILabelView的高度
在调用UILabelView时,Label的高度最好根据字符串长度动态设置,为了实现这一点,我们可以用NSAttributedString的- (CGRect)boundingRectWithSize: options: context:方法,实现方法:原创 2016-08-28 15:39:29 · 470 阅读 · 0 评论 -
根据页面滚动动态修改UINavigationBar的背景色
最近要实现UINavigationBar背景动态改变的功能,找到了Glow 技术团队博客的博文:动态修改UINavigationBar的背景色,很好的满足了我的功能需求,是个极好的轮子。fork了他们的项目源码:LTNavigationBar原创 2016-08-28 16:10:04 · 745 阅读 · 0 评论 -
JavaScript与Objective-C之间的通信
转自老谭的博客:JavaScript与Objective-C之间的通信 1、JS中变量在OC中的类型 通过OC-JS Bridge,变量的类型会自动进行转换,基本类型都会自动转换,如JS中的number、boolean都会转换成OC中的NSNumber类型,而String类型会自动转换成NSString类型,JS中的对象会转换成WebScriptObject对象转载 2016-08-31 20:14:15 · 445 阅读 · 0 评论 -
改变PageControl指示点的颜色
PageControl指示点的颜色默认是白色,此时若背景也是白色,就完全看不到PageControl控件。那么需要更改指示点的颜色:原创 2016-08-08 15:51:56 · 3838 阅读 · 0 评论 -
为UIView添加点击事件
最近经常碰到要将UIImageView和UILabel看成整体的情况,我于是就将他俩用UIView包起来,那么怎么给一个UIView添加点击事件,可以这么实现:原创 2016-08-05 17:25:26 · 3254 阅读 · 0 评论 -
设置SearchBar文字字体
SearchBar内虽然含有一个UITextField,但是并没有可以直接访问的属性,要想更改TextField的字体,可以用以下间接的方法实现:原创 2016-08-03 16:25:58 · 558 阅读 · 0 评论 -
解除嵌套UIScrollView之间的联动
一般情况下,在两个嵌套UIScrollView中,innerView滑到顶的时候,会联动outterView开始滚动,为了解除滚动,可以在innerView的.m文件添加以下代码:原创 2016-08-02 20:29:17 · 4674 阅读 · 1 评论 -
通过UIImageView的tag为点击事件UITapGestureRecognizer传参
为了点击图片时,知道哪张图片被点击,需要向UITapGestureRecognizer传递一个参数,此处使用了UIImageView的tag属性,直接将图片索引写入imageview的tag,然后通过sender.view.tag去获取图片索引。原创 2016-07-29 16:23:45 · 6314 阅读 · 0 评论 -
NSAttributedString——为Label设置富文本
为了在同一个Label中显示两种颜色的字符,如下图(浅灰和黑色): 这里用到了NSMutableAttributedString,它可以创建自定义属性的富文本。和它同类的还有NSAttributedString。 要实现上面一个Label中含两种颜色字符的效果,将汉字颜色设置成浅灰色,用了下面简单的代码实现:原创 2016-07-27 19:29:34 · 676 阅读 · 0 评论 -
NSDate获取指定格式的当地时间
方法[NSDate date]默认获得的是0时区的时间,想要得到当前的北京时间需要手动指定时区:NSDate *currentDate=[NSDate date];NSDateFormatter *formatter = [[NSDateFormatter alloc] init];[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; /原创 2016-10-10 09:14:33 · 1634 阅读 · 0 评论 -
给ViewController添加BarButton
用代码给UIViewController(self)添加BarButton时,下面的代码不起作用:self.navigationController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"xyz" style:UIBarButtonItemStyleDone target:self a原创 2016-10-13 11:06:32 · 401 阅读 · 0 评论 -
ViewController之间通信,传递参数
从FirstViewController跳转到SecondViewController,当从SecondViewController返回时,如果想把数据回传给FirstViewController,可以用代理的方法,FirstViewController中这样使用:FirstViewController.h@interface FirstViewController : UIViewControl原创 2016-10-13 11:38:06 · 3755 阅读 · 0 评论 -
Objective-C常用宏定义
看到LvesLi’s Blogging分享的一些Objective-C常用宏定义,非常好用,记录于此://1. 打印日志#ifdef DEBUG# define DLog(...) NSLog(__VA_ARGS__)#else# define DLog(...)#endif//2. 获取屏幕 宽度、高度#define kScreenWidth ([UIScreen main原创 2016-10-14 10:25:21 · 889 阅读 · 0 评论 -
pod安装与更新
pod安装和更新有时很慢,卡在不必要的环节上,可以使用以下两条命令,跳过无更新的框架,大大缩减安装时间:pod install --verbose --no-repo-update或pod update --verbose --no-repo-update原创 2017-06-23 17:12:42 · 910 阅读 · 0 评论