- 博客(82)
- 资源 (1)
- 收藏
- 关注
原创 产品思维(一)
培养自己的产品能力产品能力就是训练一个人:判断信息,抓住要点,整合有限的资源,把自己的价值打包成一个产品向世界交付,并且获得回报。用产品经理的认知框架来看人人和产品由外到内的五个层次:感知层、角色框架层、资源结构层、能力圈、内核。内核即为对自己存在感的定位,存在感之于人就好像生存之于动物一样,是触发情绪和推动行动的开关。对于浅层关系,最表层的感知层就够了。但是如果追求的是深度关系和...
2018-04-26 21:12:28 1371
转载 iOS界面跳转的一些优化方案
App应用程序开发, 界面跳转是基础中的基础, 几乎没有一个App是用不到界面跳转的, 那么怎么样去书写界面跳转代码才是比较合理的呢?大家可能在想跳转无非就2种方式, 能有什么内容? 其实并不是这样子的, 对于研发老手来说, 大型应用几乎都是利用URLScheme进行全方位的解决方案; 对于研发新手来说, 他们可能并没有遇到多路口界面跳转的瓶颈, 只会使用一些常用跳转, 并不会意识到界面跳转潜...
2018-03-26 14:37:49 1563
原创 手势密码与TouchID
手势密码绘制:首先for循环添加布局九个圆形btn,给btn加上9个对应的tag值,btn上面的图片采用绘制的方法,分别绘制出btn的未选中状态、选中状态、选错状态对应的图片创建一个可变数组,用来存放选中的按钮通过touch的began、moved、ended来监听touch事件,从而更改btn的选中状态,并添加到数组中touchsMoved 方法中通过 setNeedsDis...
2018-03-16 09:32:06 1014
转载 AutoLayout 中被忽视的“Content Compression Resistance”和“Content Hugging”
在使用storyboard进行UI布局时,我们经常不经意间会注意到“Content Compression Resistance Priority”和“Content Hugging Priority”这两个属性。下面给大家简单介绍下这两个小家伙:首先,我们得先来了解下另一个属性intrinsic size(固有尺寸),一个根据自身内容大小而决定的尺寸。我们都知道,UIButton、U...
2018-03-08 19:57:10 413
原创 再谈App的版本更新
版本更新的检测与提示的相关文章已经很多了,但是多数只能应对基本的产品需求。先给大家推荐一个封装好的工具类,实现了一行代码检测app是否有新版本,代码很简单,GitHub地址:https://github.com/wolfhous/HSUpdateApp我们在实际的项目开发过程中,为了更好的用户体验和产品升级,有时候我们希望用户及时的更新,但是这种更新用户是可选的;但是如果我们遇到一个比较严...
2018-03-08 14:57:54 570
原创 工作例会关于“工作效率”的分享
效率低,往往是因为 不专注。要求自己每件事都要有 时间点 和 完成里程碑。 哪怕是一个很大的工程,当你切成五十段之后,面临的第一个任务也无非是挖一个大坑。大工程分段,勇于面对。想清楚重要性,比着急出发更重要。可以想一下,如果每天只能做三件事,我要做哪三件。在错误的道路上跑得越快越没救。不走弯路才是效率高的体现,而不只是走得快。一切以结果为导向,每次都激励自己“赶紧忙完这一段,就可以...
2018-03-07 18:03:30 4736
原创 安利几个可以提高效率的工具
Magnet窗口管理软件,让你的桌边清爽整洁,方便进行多任务处理。快捷键的使用十分方便快捷。6元的良心售价你值得拥有。滴答清单好评如潮的任务管理软件,管理你的所有待办事项,特别是日历模式和番茄时间,比较实用。另外,电脑端和移动端的信息即时同步使用起来更加便捷。高级会员的性价比还是不错的,168元的年费平均下来一个月14块而已。MWeb早前写文章用过好几个 markdown 的编辑器,比较喜欢用 MO
2018-03-07 17:27:25 463
原创 Aspects框架
Aspects简介:Aspect是一个基于method swizzing的iOS函数替换的轻量级的第三方库(不足千行代码),有关iOS运行时的相关知识,移步 runtime从入门到精通,他可以很好的实现勾取一个类或者一个对象的某个方法。Aspects 的 github地址面向切面(AOP)编程面向切面编程就是通过预编译和运行期动态代理实现给程序动态统一添加功能的一种技术,使用Aspects框架就是
2018-03-06 16:37:42 4956
原创 App启动时间的测量和优化
启动时间的测量准备知识简单了解一下App 的启动过程:解析Info.plist加载相关信息,例如如闪屏沙箱建立、权限检查Mach-O加载如果是胖二进制文件,寻找合适当前CPU类别的部分加载所有依赖的Mach-O文件(递归调用Mach-O加载的方法)定位内部、外部指针引用,例如字符串、函数等执行声明为attribute((constructor))的C函数加载类扩展(Category)中
2018-03-05 18:09:05 1406
原创 日期时间处理相关工具类
//// KPDateTool.h// KPDateTool//// Created by 刘鲲鹏 on 2018/2/28.// Copyright © 2018年 刘鲲鹏. All rights reserved.//// 日期时间处理相关工具类#import <Foundation/Foundation.h>@interface KPDateToo...
2018-03-02 10:38:41 470
原创 横竖屏切换那些事
采用系统提供的方法来进行横竖屏切换一、监听屏幕旋转方向在处理iOS横竖屏时,经常会和UIDeviceOrientation、UIInterfaceOrientation和UIInterfaceOrientationMask这三个枚举类型打交道,它们从不同角度描述了屏幕旋转方向。UIDeviceOrientation:设备方向iOS的设备方向是通过iOS的加速计来获取的。
2018-01-30 11:16:13 492
转载 Xcode调试小技巧 - 提高开发效率
1. LLDB常用调试命令LLDB是XCode内置的为我们开发者提供的调试工具,可以在设置断点的时候在控制台中输入相关的lldb命令进行调试。p :用于输出基本类型(lldb) p cell(HomeSupplyOrBiddingCollectionViewCell *) $0 = 0x00007fa7cedb27f0po :用于输出 Objective-C 对象(lldb) po cell<H
2017-12-05 17:42:47 452
转载 Xcode9之折叠代码
Xcode9之前版本可以代码局部和全局折叠,但是9之后只能以某个函数为单位进行全局折叠,特别是里面的逻辑判断的代码不能局部折叠Xcode9之前版本代码折叠:在Xcode菜单里选择Preference——Text Editing,你会发现里面有一个“code folding ribbon”,勾选它就能恢复代码折叠功能了。然后通过菜单Editor——Code Folding,你就可以使用你需要的折叠功能
2017-12-05 11:56:07 6880
原创 SDWebImage计算缓存值与清除缓存
显示缓存值:UILabel *cacheLabel = [[UILabel alloc] initWithFrame:CGRectMake(JKScreenW - 140, 0, 100, 40)];[cell addSubview:cacheLabel];cacheLabel.font = [UIFont jk_systemFontOfPxSize:28];cacheLabel.textCo
2017-09-04 15:52:15 480
原创 iOS 常见的两种页面跳转
导航栏push出来的页面返回之前某个的页面方法1:UIViewController *vc = self.navigationController.viewControllers[i];// i是navigationController堆栈中的第几个控制器[self.navigationController popToViewController:vc animated:YES];方法2:NSAr
2017-08-23 17:00:04 2042
转载 iOS跳转QQ聊天应用
首先在info.plist里面添加LSApplicationQueriesSchemes(Array类型) 然后插入weixin, wechat, mqq的string类型子项,如下图:// 判断手机是否安装QQ 微信App// 判断手机是否安装QQ if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString
2017-08-23 15:56:44 2806
原创 启动页和app图标相关问题
启动页设置启动页在 Assets.xcassets 中添加Launch Image 文件夹将app的启动页路径设置成 Launch Image 文件夹将 LaunchScreen.storyboard 中 的 Use as Launch Screen 取消勾选去除多余的启动页类型,保留最基本的四个尺寸启动页尺寸、命名规范及对应图标位置640 x 1136 —— Default-56
2017-08-23 13:59:55 681
原创 使用 XHLaunchAd 快速实现app启动广告
XHLaunchAd 的 github 代码地址 : [](https://github.com/CoderZhuXH/XHLaunchAd) 1. Cocopods导入pod 'XHLaunchAd'2. 在 AppDelegate.m 中加入头文件#import "XHLaunchAd.h"#import "RTGlobalWebViewViewController.h" // 自己封装的简
2017-08-23 10:54:08 1106
原创 极光推送的集成
在 AppDelegate.m 中的 didFinishLaunchingWithOptions 代理方法中加入下面代码/** -------------- 配置极光推送 -------------- */ if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) { /** 初始化APNs */ JPU
2017-08-23 10:24:07 427
原创 分割线 - layer
对于一些没有事件响应的视图,比如分割线,我们可以直接添加layer来达到显示效果:#import <UIKit/UIKit.h>@interface UIView (HTExtension)- (void)addLineLayerWithX:(CGFloat)x Y:(CGFloat)y Width:(CGFloat)width Height:(CGFloat)height Color:(UICo
2017-08-13 16:10:51 1898
翻译 XCode9新功能官方文档翻译
Xcode 9的新功能Xcode是用于为Apple TV,Apple Watch,iPad,iPhone和Mac创建应用程序的完整开发人员工具集。Xcode开发环境以tvOS SDK,watchOS SDK,iOS SDK和macOS SDK的形式捆绑Instruments分析工具,Simulator和操作系统框架。Xcode 9的亮点Xcode 9包括整体质量改进以及广泛的新功能。全新编辑。快速
2017-07-06 19:08:23 1141
原创 iOS 钥匙串相关操作
这两天闲下来,整理了一下之前的项目,看到这个工具类,拿出来分享一下。钥匙串操作工具类,实现钥匙串的存储,读取,删除操作。直接上代码://// KeyChainStore.h// GeXiaZi//// Created by Coyote on 16/10/18.// Copyright © 2016年 apple. All rights reserved.//#import <F
2017-07-06 15:04:10 668
原创 使用UITextView实现文字点击事件
原理:采用的是UITextView的URL链接,设置UITextView.attributedText并设置代理delegate,响应的回调函数shouldInteractWithURL。实现://使用textView的URL链接 UITextView *protocolTextView = [[UITextView alloc] init]; [_mainScrollView ad
2017-07-03 15:56:16 4816 1
原创 带进度条的WKWebView
1. 导入头文件 #import <WebKit/WebKit.h>2. 实现代理<WKUIDelegate,WKNavigationDelegate>3. 创建WKWebView,添加观察者- (void)setupSubViews { _webView= [[WKWebView alloc] initWithFrame:CGRectMake(0, 64, Screen_Width, Scr
2017-07-03 15:32:37 376
转载 Mac iOS 模拟器录制屏幕生成Gif
有的时候我们需要将iOS app 的运行效果录制下来并保存成gif动画,那么我们可以这样做:录制mov格式视频:打开mac自带 QuickTime PlayerQuickTime Player > 文件 > 新建屏幕录制点击录制按钮 > 选择录制区域 (选择模拟器) > 开始录制录制完成 > 点击mac右上角停止按钮结束录制 > 保存格式为 mov将mov视频转成gif:下载软件GIFBrew
2017-06-28 09:45:19 1914
原创 Mac Mini - 一个深坑
新公司给配的Mac mini,作为开发人员,天天对着电脑十个多小时以上,一定要配个好一点的显示器,现在的显示器看的眼睛快瞎了……于是,在艺卓显示器和4K显示器之间纠结了一下,艺卓显示器护眼效果不用多说,绝对number one,但是价格也是好高呀,差一点在淘宝买了二手的,听有人说淘宝二手的艺卓显示器基本上就是洋垃圾,很多都是从医院这些单位采购淘汰下来的,瞬间打消了这个念头。接下来就考虑4K显示器了,
2017-06-27 10:47:51 26758 4
转载 WKWebView获取内容高度
*webView = [[UIWebView alloc] init]; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"urlString"]]];#pragma mark - WKNavigationDelegate// 页面加载完成之后调用 此方法会调用多次- (void)webView
2017-06-26 19:16:14 7636 1
原创 iOS 旋转动画的几种实现方式
第一种:使用CABasicAnimated方法这种方法是最简单的方法CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@“transform.rotation.z"];//默认是顺时针效果,若将fromValue和toValue的值互换,则为逆时针效果animation.fromValue = [NSNumb
2017-06-26 18:29:35 29715
原创 关于UITextField的封装
直接上代码:.H文件://// KPTextField.h//// 如果有占位字符,请先设置占位字符内容,再设置相关属性//// Created by 刘鲲鹏 on 2017/5/16.// Copyright © 2017年 刘鲲鹏. All rights reserved.//#import <UIKit/UIKit.h>#define KPTextFieldPadding
2017-05-17 20:03:32 1305
原创 关于UITextView的封装
目前能够实现的功能:设置占位字符,可以设置占位字符的字体大小,字体颜色,字体高亮颜色,也可以设置属性字符串作为占位字符设置最大行数,超过最大行数之后滚动显示设置最多输入的文字个数,超过之后不能输入,并触发block回调设置输入框的圆角弧度设置光标的宽度和高度
2017-05-15 20:12:32 643
原创 Xcode之自定义代码块
很久之前就知道Xcode的这个非常好用的功能,但是一直没有怎么用过,今天闲下来整理一下,添加了写自己的代码块。添加自定义代码块将代码块中后期需要改动的地方用<# 和 #> 包裹起来,在中间注释上此处应该填写的内容打开Xcode右侧的Utilities View,然后在其靠底部的位置找到并打开Code Snippets Library选中代码块,拖动到Code Snippets Library中
2017-05-04 16:29:34 410
原创 CocoaPods使用简明教程
什么是CocoaPodsCocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。 使用CocoaPods的目的是让我们能自动化的、集中的、直观的管理第三方开源库。CocoaPods的原理CocoaPods的原理是将所有的依赖库都放到另一个名为Pod
2017-05-03 19:52:22 424
转载 CAGradientLayer
CAGradientLayer是用来生成两种或更多颜色平滑渐变的。用Core Graphics复制一个CAGradientLayer并将内容绘制到一个普通图层的寄宿图也是有可能的,但是CAGradientLayer的真正好处在于绘制使用了硬件加速。基础渐变我们将从一个简单的红变蓝的对角线渐变开始(见清单6.6).这些渐变色彩放在一个数组中,并赋给colors属性。这个数组成员接受CGColorRef
2017-03-07 18:22:49 547
原创 集成个推实现推送跳转到指定页面
项目之前使用的信鸽推送,觉得不怎么好用,就在闲下来的时候换成了个推,个推的文档还是比较详细的,简单的推送只要看下文档就OK了。透传个推有个透传的功能,使用这个功能进行推送的时候,如果APP在前台运行时,是不会显示推送信息的;如果APP是在后台或者杀死的情况下,是会有推送通知的显示的。这个一定要和推送通知区分开来。(最重要的是要和后台人员商量一致,再传参数的时候是使用透传还是消息通知,如果使用透传功能
2017-02-22 14:37:03 7693
原创 防止按钮快速连续点击造成多次响应的方法
用户快速点击某个按钮,导致页面重复push或者重复发送网络请求。这样的问题既对用户体验有影响,而且还会一定程度上增加服务器的压力。主要使用以下办法:在每次点击时先取消之前的操作- (void)buttonClicked:(id)sender{ //这里是关键,点击按钮后先取消之前的操作,再进行需要进行的操作 [[self class] cancelPreviousPerformRequ
2017-01-10 20:06:12 4973
原创 加载JIF动画的几种方法
1、使用UIWebView// 读取gif图片数据 注意:传入nil参数可能有警告 NSData *data = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"001" ofType:@"gif"]]; UIWebView *webView = [[UIWebView allo
2017-01-10 19:39:04 1406
转载 IOS四种反向传值的方法
方法一:使用target-action设计模式代码如下:(由根视图推出子视图,再由子视图推出根视图,在推出根视图时,子视图传一个color的属性给根视图,用来修改根视图的背景颜色)根视图控制器代码://.m文件- (void)viewDidLoad{ [super viewDidLoad]; self.view.backgroundColor = [UIColor redColor
2016-11-15 16:58:37 758
转载 根据类名来跳转对应界面
代码实现很简单,直接上代码://根据类名来跳转对应界面-(void)pushToViewControllerWithClassName:(NSString *)className { if (className != nil) { id myObj = [[NSClassFromString(className) alloc] init]; @try {
2016-09-18 21:36:26 1816
转载 兼容iOS 10 资料整理笔记
本文只为整理iOS 10 相关资料,也参考部分网上的文章,还会陆续更新其他iOS 10 相关资料,以及开发中遇到的问题等等。
2016-09-16 23:02:28 1362 2
转载 iOS App被拒原因
iOS 应用提交审核要持续一周或者更久,在提交之前,我们一定要进行「自我审查」,避免被拒。ASO100 为大家收集整理了2015年 App Store 审核被拒的23个理由,并且附上官方拒绝理由原文,供大家上传应用时对照检查。
2016-09-16 21:50:25 3482
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人