修复 iOS 网页在拍照预览时图片被旋转的问题

前几天用 uni-app 写了个上传图片的小案例(编译到 H5 端),当在 iPhone 上拍照上传时,发现在页面上预览的图片是发生了旋转的。

图片的 Exif 信息

Exif 全称 Exchangeable image file format,中文叫可交换图像文件格式,Exif 中存储了图片的方向信息。

阅读更多 >>

CSS设置宽高比

<view class="scale-box">
    <view class="scale-box-content">
        <!-- content -->
    </view>

阅读更多 >>

iOS 验证码输入框

特性

  • 支持自定义验证码长度(默认长度为6)
  • 支持切换键盘类型,适应纯数字、数字+字母等组合(默认为系统数字键盘)
  • 验证码输入完毕后自动收起键盘并通过block回调调用者

阅读更多 >>

通过 DOMSubtreeModified 事件接收 DOM 节点变化的回调

需求场景:通过 WKWebView 加载第三方网页,其中有一个录制人脸视频的功能,为了用户体验需要默认调用前摄像头,然而第三方的网页我们无法调整,只能通过注入 JS 来修改 input 标签,将 capture 属性改成 user 即可调用前摄像头。

网页内容是动态生成的,并不是写死的模板,所以需要监听 body 子节点发生改变的事件,每当 body 内容发生变更时,就去找出调用摄像头的 input 标签,找到之后动态修改它的属性。

阅读更多 >>

适配iOS13

虽然苹果在今天推送了 iOS13.1.1 ,但还是简单记录下适配 iOS13 的过程吧。

KVC禁止访问私有属性

在 Xcode11 中苹果禁止了开发者通过 KVC 方式获取私有属性,如果你在代码中通过该方式访问了不该访问的东西,App 则会闪退并在控制台中可以看到如下错误信息:

阅读更多 >>

macOS中搭建PHP+MySQL环境

请先安装 HomeBrew 工具

安装PHP

macOS自带了PHP,不过自带的PHP版本都是比较老的,我们可以通过brew工具来安装PHP并且不会与系统自带的PHP产生冲突。

阅读更多 >>

iOS 逆向之 Cycript 篇

Cycript 是由 saurik 推出的一款脚本语言,可以看作是 Objective-C 和 JavaScript 的结合物,可通过 Cydia 安装。

注入进程

一般都是使用 cycript 来进行一些代码的测试,所以需要先把 cycript 注入到目标应用的进程中,通过如下方式注入:

阅读更多 >>

Homebrew

Homebrew 是 mac 平台的软件包管理器,它允许我们通过 brew install xxx 的方式安装软件。

安装 Homebrew

官网 上有详细的说明,可以自行查阅。

阅读更多 >>

iOS 砸壳教程

iOS 从 App Store 下载的应用都是加过壳的(只有从 App Store 下载的才是加壳的,系统应用和其他渠道下载的都是未加壳的),要想对应用进行逆向,首先得把这层壳去掉,俗称脱壳砸壳

工具

    阅读更多 >>

    Sublime Text 报 There are no packages available for installation 错误

    前言

    最近升级了 Sublime Text 后突然安装不了插件了,卸载了重新安装还是照样报错。错误信息如下图所示:

    error.png

    阅读更多 >>

    Method Swizzling

    交换方法实现

    得益于 Objective-C 的 runtime 机制,method swizzling 这个黑魔法可以为我们在实际开发中解决诸多常规手段所不能解决的问题。

    阅读更多 >>

    基于阿里云 OSS 搭建 hexo 博客

    时间过的真快,转眼弹性Web托管服务也即将到期了,但是每年 RMB199 的费用确实有点高了,所以今年不打算续费了,转战 OSS。

    OSS 的计费方式分为 按量付费包年包月 两种方式,由于本站访问量实在是低,流量费用简直可以说是忽略不计,所以我采用了按量付费的计价方式。

    阅读更多 >>

    macOS/Linux 文本替换

    有时候我们需要将项目下的某个字符串全局替换成另一个字符串,可以借助 IDE 工具,当然也可以直接通过 grep + sed 命令完成。

    单文件文本内容替换

    sed -i "" "s/search/replace/g" filename

    阅读更多 >>

    Android 反编译

    可以从各大应用商店下载 apk 安装包

    获取 classes.dex 文件

    将 apk 后缀改成 .zip,然后解压出来的文件就会包含 classes.dex

    阅读更多 >>

    setTimeout 的时间限制

    函数定义:

    setTimeout(function, millisec);

    对于 setTimeout 函数的说明,不管是 w3cschool 还是 MDN 文档都未提及第二个参数 millisec 的取值范围,只是简单地说明该参数是一个需要延时执行的毫秒数。

    阅读更多 >>

    重载jQuery的ajax方法解决JSON解析的问题

    当服务器返回的JSON字符串中包含回车符等特殊字符时,ajax的解析会报错,导致程序执行异常。

    为了解决这个问题,在不侵入任何代码的情况下,只能替换 jQuery ajax 的方法实现了。

    将下面的代码复制到公共js的顶部,确保在发送网络请求之前就已经执行了替换操作,这样我们就能自定义解析服务器返回的JSON数据了。

    阅读更多 >>

    macOS's dark mode (暗黑模式)

    苹果在 macOS 10.14 中为我们带来了 dark mode (暗黑模式) 功能

    可以在 系统偏好设置通用 面板中开启暗黑模式

    判断当前主题是否为暗黑模式

    - (BOOL)isDarkMode {

    阅读更多 >>

    Charles进行HTTPS抓包

    当前环境:macOS 10.14.1 + Charles 4.2.7 + iPhone 7 iOS 12.1

    下载安装Charles

    前往 https://www.charlesproxy.com/download/ 下载对应平台的 Charles 软件。

    阅读更多 >>

    SDWebImage 4.x 播放GIF图片

    今天产品部的突然说 iOS 版 App 播放不了 GIF,一接到这个反馈信息,我一开始是不相信的,因为之前的旧版也是用的 SDWebImage 这个库且未做任何代码适配就能够播放 GIF,所以我内心是极不愿相信这是我的锅。

    新版 App 重构后也上线了两个多月了,这期间由于 App 未涉及到 GIF 的播放,所以一直未发现该问题(是我工作的疏忽)。

    阅读更多 >>

    微信小程序转发按钮的显示与隐藏

    在小程序就要上线之际,突然接到一个需求:只有登录的用户才能转发小程序。

    在一接到这个需求的时候,我内心是很拒绝的,一时间也是一脸懵逼态,无从下手。在我痛定思痛之后,发现了一对API wx.showShareMenuwx.hideShareMenu,这对API能够显示/隐藏 当前 页面的转发按钮。

    阅读更多 >>

    为微信小程序增加通知机制

    当有多个页面需要监听某个状态(如:登录状态),当状态发生改变时,需要及时通知到每个监听者(页面),这就是通知机制。

    源码

    新建一个 NotificationCenter.js 文件,内容如下:

    阅读更多 >>

    微信小程序扩展 Page 对象

    对于 iOS 开发者来说,如果需要对一个类进行扩展,第一反应就是 runtime + category,有了这组合,我们简直可以为所欲为,为类添加属性、方法、重写某个方法都不在话下。

    阅读更多 >>

    UITabBar 点击刷新功能

    我们都知道 UITabBar 只能添加 UITabBarItem,而 UITabBarItem 是继承自 NSObject 的,但是我们可以发现 UITabBarItem 内部有一个 _view 属性与私有类 UITabBarButton 关联着,而这个 UITabBarButton 正是我们在 UITabBar 上看到的一个个按钮对象。

    阅读更多 >>

    修复 iOS12.1 UITabBar 布局错乱的bug

    此 Bug 是在 iOS 12.1 Beta2 版本中被引入的,没想到在 iOS 12.1 正式版中并未修复

    Bug触发条件

      阅读更多 >>

      iOS禁用第三方输入法

      当我们需要用户输入数字时,我们会将键盘类型设置为 UIKeyboardTypeNumberPadUIKeyboardTypePhonePadUIKeyboardTypeDecimalPad 等数字类型的键盘。但是如果用户使用了第三方输入法(比如搜狗),那就无法达到强制输入数字的目的了,因为搜狗输入法在这些 UIKeyboardType 枚举类型中,除了常规的 0~9 数字键外,还额外带了其他符号键,用户可以输入一些特殊字符,此时如果想要达到效果,就只能通过重写遵守 UITextFieldDelegate 并实现 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 方法,在这里通过正则判断用户输入的是否为数字。

      阅读更多 >>

      iOS 刘海屏适配

      今年苹果发布了三款 iPhone,分别为 iPhone XS、iPhone XS Max 以及 iPhone XR,尽管大家都在吐槽刘海屏,但是苹果今年已经是 iPhone 系列标配刘海屏了。

      虽然苹果为我们带来了更大屏幕尺寸的 iPhone XS Max 和 iPhone XR,尽管一个是6.5英寸一个是6.1英寸,并且 iPhone XS Max 的分辨率更是达到了 1242px × 2688px,但是对于我们开发者来说,这两者的物理尺寸都一个样,都是 414×896pt,而 6/7/8 Plus 系列的宽度也是 414pt,所以你可以把他们看作是 plus 系列的加长版。

      阅读更多 >>

      UIButton 被禁用时显示一个菊花提示用户正在加载中

      当点击按钮后,可能会执行一个比较耗时的操作,但是又不方便在整个页面进行提示时,此时如果我们仅仅只是把按钮禁用了以防用户重复点击,但是用户并不知道操作是否还在继续,用户体验不够友好;但是如果我们在按钮被禁用时,自动显示一个转圈圈的小菊花进行提示,那用户体验就会好很多,用户一看就知道当前操作正在进行中。

      阅读更多 >>

      解决 UIButton 快速点击后重复提交数据

      有时候我们快速点击按钮多次,会触发多次点击事件,最终导致数据提交多次,这是很没必要的。

      说明

      • 默认开启防重复点击功能,默认间隔时间 0.5

      阅读更多 >>

      UITableViewHeaderFooterView 修改背景色/文字

      注意点:

      • 修改背景色只能通过修改 contentViewbackgroundView 的背景色实现,修改 UITableViewHeaderFooterView 自身背景色无效果
      • 只能在 tableView:willDisplayHeaderView:forSection: 代理方法中进行设置,在 tableView:didEndDisplayingHeaderView:forSection: 设置无效

      阅读更多 >>

      iOS JSON解析换行符(\r、\n、\r\n)

      项目需要对JSON返回的换行符进行解析,系统提供了解析JSON的方法[NSJSONSerialization JSONObjectWithData:options:error:]
      AFNetworking 内部也是采用该方法来解析服务器返回的内容。所以,我只需要 hook 该系统方法,当解析失败的时候进行处理就行了,这样就可以一劳永逸,也无需修改其他地方的代码。

      阅读更多 >>

      为 NSArray/NSDictionary 优雅地过滤 nil 值

      作为一名 iOS 开发者,肯定知道 NSArray/NSDictionary 不能存储 nil 值,如果你试图往数组/字典中存储 nil,那么 App 也将毫不客气的为你闪退。

      尽管在日常的编码中,我们都会小心翼翼的处理 nil,但是总会有纰漏,毕竟大部分数据都是从服务器下发的,我们很难彻底把控。作为一名码农,肯定是想着怎么偷懒的,既能自动规避 nil,又能够不影响现有代码,最好不用引入第三方方法。得益于 Objective-C 的 runtime 机制,我们可以很优雅地通过 Method Swizlling 来解决上述问题。

      阅读更多 >>

      iOS Haptics Feedback (触感反馈)

      要求

      • iOS 10.0+
      • iPhone 7/7P 或更新机型
      • 打开”设置–声音与触感–系统触感反馈”选项

      阅读更多 >>

      WKWebView在iOS9上崩溃

      最近项目重构,所以采用了 WKWebView 来展示网页内容,但是发现在 iOS9 上程序会出现 crash,以前也用过 WKWebView 但是都没遇到这么坑的情况啊。

      具体操作:通过 push 网页控制器,然后在 pop 之后,程序就崩了。

      打断点也定位不到 crash 代码行,打开 Xcode 的僵尸模式之后,控制台也仅输出以下信息:

      阅读更多 >>

      iOS地铁图

      使用了高德地图的JS API,文档戳这里

      原理

      通过 WKWebView 加载一个 HTML 字符串,通过注入 JS 在页面加载完毕后加载高德地图的JS库,然后创建地铁地图,同时通过JS库提供的 getCityList 接口获取所有的城市信息,然后把城市数据回传给 Objective-C,OC 在拿到数据后在右上角添加一个切换城市的按钮,当选择所要切换的城市后,通过 WKWebView 调用 JS 代码并把城市 id 传递给 JS,JS 拿到数据后通过 setAdcode 接口来切换地铁数据。

      阅读更多 >>

      十六进制字符串转UIColor

      支持十六进制字符串的格式有:

      • #FFF
      • #FFFF
      • #FFFFFF

      阅读更多 >>

      修改DZNEmptyDataSet按钮的宽高

      相信没有哪款App是没有使用到滚动视图(UIScrollView、UITableView、UICollectionView)的吧,我相信大家用的最多的就是UITableView了,当需要展示列表数据时,我想大家第一次时间想到的就是UITableView。

      如果数据不为空的时候还好,可谁也不能保证一定会有数据展示吧,如果没数据的时候,就会给客户呈现一个空白页面(白板),此时我们可以给用户一点提示信息(图片、文字),这不仅可以提升用户体验,也不至于让用户一脸懵逼。

      阅读更多 >>

      使用 unwind segues 关闭当前页面

      我们经常会遇到这样一种需求,在控制器上有一个关闭按钮,点击来关闭当前页面。而我们通常的做法都是在 Storyboard 上拖一个 UIButton 出来,然后将 UIButton 拖线到控制器上,新建一个 IBAction 方法,并在该方法中通过代码来关闭当前控制器。

      其实,我们可以不需要这么麻烦,可以通过 Unwind Segue 在 Storyboard 上拖拖线即可达到关闭控制器的效果。

      阅读更多 >>

      在Markdown中创建表格

      越来越多人采用Markdown进行写作,而表格作为一种比较常见的需求,Markdown也支持快速创建表格。

      语法:

      | Name | Score |
      | :- | :-: |
      | zhangsan | 90 |

      阅读更多 >>

      博客搬迁至阿里云

      前因

      清明假期前,收到阿里云发来的邮件,说我的域名未指向阿里云国内节点(不含香港)服务器,根据工信部相关法规规定属于空壳网站,需要我尽快处理,否则将删除网站备案接入信息,甚至网站备案号有可能会被注销。

      阅读更多 >>

      Swift选项集合(OptionSet)

      Objective-C中的NS_OPTION宏

      对于iOS开发者来说,NS_OPTION这个宏应该都不会陌生吧,这个宏给我们的开发带来了极大的便利。

      阅读更多 >>

      UICollectionView瀑布流布局

      仅作为学习交流之用

      环境

      • Xcode9.0+

      阅读更多 >>

      iOS从通讯录中复制粘贴电话号码携带特殊字符

      在做收货地址的功能,其中有个场景就是用户先从手机通讯录中拷贝了某个电话号码,然后将其粘贴到输入框中。一切看似正常,但是这里有个问题,从通讯录中拷贝的电话号码,自带了特殊的不可见unicode字符,如果你不打断点查看变量值,压根不会看到这些特殊字符。

      特殊字符

      这些特殊字符在OC和Swift中有不同的表现形式:

      阅读更多 >>

      Swift截取子字符串

      在Swift中截取子串,一直是个头疼的问题,毕竟牵涉到String.Index这个鬼东西,而且API还不好用。现在连substring(to:)substring(from:)substring(width:)这几个方法也被废弃了。

      阅读更多 >>

      Swift4之Codable协议

      最近公司新项目采用了Swift开发,在处理JSON数据时,一开始是准备采用阿里开源的HandyJSON,后来了解了下,随着Swift4的到来,苹果为我们带来了Codable协议,用于数据的编解码,虽然现在的Codable并不完善,使用上也并没有那么的友好,但是毕竟是官方出品,后期肯定会越来越完善的,所以决定采用Codable而弃用HandyJSON。

      阅读更多 >>

      SafariServices框架

      相信大家在日常开发中,都离不开web吧,部分页面还是得用网页进行展示。在iOS7和之前我们可以用UIWebView来加载网页,在iOS8 Apple为我们带来了WKWebView(WebKit框架),而在iOS9 Apple为我们提供了进一步的封装库SafariServices。

      SafariServices的可定制性很差,可以说毫无定制性可言,我们只能控制一下导航栏和底部工具栏的颜色,以及通过SFSafariViewControllerDelegate可以添加自定的分享功能(UIActivity)。

      阅读更多 >>

      iOS编译MobileVLCKit.framework

      我的编译环境

      • macOS 10.12.6
      • Xcode9.2

      编译MobileVLCKit.framework静态库

        阅读更多 >>

        iOS更改App图标

        苹果在iOS10.3系统中为我们带来了更改App图标的功能, 主要接口定义如下:

        // Pass `nil` to use the primary application icon. The completion handler will be invoked asynchronously on an arbitrary background queue; be sure to dispatch back to the main queue before doing any further UI work.

        阅读更多 >>

        iOS打开QQ临时会话窗口

        前提条件:接收临时会话的QQ号码必须开通QQ推广功能,否则不能打开临时会话窗口。

        公司项目在商品详情页面中,有一个客服按钮,点击后需要打开客服MM的QQ聊天窗口,在此可以向客服MM咨询商品相关的问题。这里就记录下iOS如何跳转到QQ的聊天窗口。

        阅读更多 >>

        UIColor转UIImage

        没啥好说的,直接看代码

        ⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇

        .h头文件

        @interface UIImage (Color)

        阅读更多 >>

        UITextView禁用回车符

        最近项目有个需求,需要在UITextView中禁止用户输入回车符,因为后台不会过滤回车符号,所以当AFNetworking请求数据时,如果返回的数据中包含了回车符,那么JSON解析将会失败。既然后台不处理,那没办法,只能在UITextView上禁用回车符了。

        我们需要解决以下问题:

        阅读更多 >>

        IB_DESIGNABLE引起Xcode编写代码时异常卡顿

        最近升级了Xcode9之后,发现Xcode经常性卡顿,菊花常现,已经严重影响到代码的编写了,一开始还以为是Xcode9的问题,后来在网上搜索了下,原来老版本的Xcode就存在这个问题,而且是由于IB_DESIGNABLE这个系统宏导致的。

        当我们在自定义视图的定义前面用了IB_DESIGNABLE这个宏来修饰,就表明了我们这个视图是可以在SB/XIB中实时预览的,本来这是一个很好用的功能,我们直接修改了视图代码就可以在SB上直接渲染出来,这真是所见即所得,简直棒到没朋友。但是这功能确实也坑了我们一把,当我们在编写代码时,只要修改了源码,哪怕只敲了一个字符,Xcode也会自动重新编译SB文件,这就很尴尬了,当我们不断敲代码的时候,Xcode就不断地重新编译SB文件,最后导致Xcode异常卡顿。

        阅读更多 >>

        UITableViewCell长按拷贝菜单选项

        运营推广人员向我们反馈说需要一个能方便拷贝会员手机号码的功能,方便进行其他操作。由于会员信息是采用UITableView来进行展示的,而系统已经为我们准备好了UITableViewCell长按功能菜单的API,我们只需实现对应的代理方法即可。

        阅读更多 >>

        iOS11保存图片应用闪退

        今天产品经理向我反馈在iOS11上点击保存图片后App闪退了,通过调试发现控制台输出了如下错误信息:

        [access] This app has crashed because it attempted to access privacy-sensitive data without a usage description.  The app's Info.plist must contain an NSPhotoLibraryAddUsageDescription key with a string value explaining to the user how the app uses this data.

        阅读更多 >>

        iOS添加文件共享

        由于iOS的沙盒机制,导致应用不能访问沙盒目录以外的文件目录。所以如果我们需要将音视频文件拷贝到App上,只能拷贝到App的Documents目录
        如果我们的App需要支持从PC将文件拷贝到App的Documents目录并展示出来,则需要在Info.plist中添加UIFileSharingEnabled(Application supports iTunes file sharing)键,并将键值设置为YES

        阅读更多 >>

        UITableView动态修改tableHeaderView的高度

        有时候我们会用表格的头部视图来做一些简单的UI展示,如果遇到高度固定的情况还好,并无任何问题。但是如果遇到高度需要动态调整的时候,那就有点蛋疼了,因为你不能通过直接修改tableHeaderView的frame属性来达到效果。直接修改frame会导致UI有时候正常有时候又不正常,完全把控不了。

        阅读更多 >>

        Objective-C/Swift退出多层循环

        如果有多层嵌套的情况下,有时候我们需要在某处直接退出多层循环,在Objective-C下并没有比较好的方式实现;而在Swfit中可以通过标签语句来比较优雅地实现,首先需要使用标签标识不同的循环体,形式如下:

        LabelName: while condition {

        阅读更多 >>

        iOS截屏分享

        最近在把玩支付宝小米商城App时发现了个好玩的东西,在支付宝首页中截屏,则会在屏幕右侧弹出一个小窗口来展示首页截屏图片,点击图片就会进入求助反馈页面,再点击意见反馈,截屏的图片就会自动被选上作为反馈图片使用;而小米商城的做法则更好玩,在任意页面中进行截屏,则会在屏幕右下角中弹出一个分享截图给好友的提示框,点击则会弹出分享页面,在此可以看到我们刚才截取的屏幕图片,接下来你就可以把截屏图片分享给你的微信朋友、QQ好友、发到朋友圈、发微博等等,任君选择。

        阅读更多 >>

        UICollectionView监听reloadData完成状态

        如果你只想知道代码的正确使用姿势,请直接看文章底部的示例代码。

        有时候我们需要在UICollectionView执行了reloadData方法后,监听reloadData的完成状态以便执行某些回调操作。如果我们紧跟着reloadData代码,在其后面继续编写我们的回调操作,这个时候你会发现程序的运行结果与我们的预期有出入,并非是我们所期望的结果。

        阅读更多 >>

        UIScrollView计算当前滚动页码

        我们需要在UIScrollView滚动时根据滚动偏移量实时计算当前滚动到第几页,需要实现scrollViewDidScroll(_:)这个代理方法,记得开启分页功能scrollView.isPagingEnabled = true

        func scrollViewDidScroll(_ scrollView: UIScrollView) {

        阅读更多 >>

        UIScrollView在iOS11新增的contentInsetAdjustmentBehavior属性

        在iOS11中,苹果对UIScrollView新增了contentInsetAdjustmentBehavior属性来取代之前的UIViewController的automaticallyAdjustsScrollViewInsets属性。

        阅读更多 >>

        macOS应用窗口居中显示

        调整窗口大小或居中显示,必须将NSWindow的restorable属性设置为NO,否则无效果。

        应用在关闭时会记住window当前的位置以及frame,在下次启动应用时,系统会将window显示在上次关闭时的位置,并恢复关闭时的frame。有时候我们希望在每次打开应用时,应用都能居中显示,或者是我们需要在应用启动时,指定窗口的frame,则可以在NSWindowController的windowDidLoad方法进行设置:

        阅读更多 >>

        隐藏NSWindow的titleBar

        新建一个macOS应用项目,编译运行后默认出现的界面是如下图所示的样子:

        默认效果

        有时候我们需要去掉titleBar,类似QQ登录界面那种,此时我们可以在继承自NSWindowController的自定义类的-windowDidLoad方法中通过下面的代码实现效果:

        阅读更多 >>

        Xcode8 Swift3通过Playground运行UI

        我们都知道在Playground上能够一边写代码一边预览代码运行效果(所见即所得),如果我们需要在Playground上调试UI,就得借助于PlaygroundSupport系统库了。

        1、导入PlaygroundSupport库

        import PlaygroundSupport

        阅读更多 >>

        UITableView在iPad iOS9下cell宽度显示不全

        UITableView在iOS9后新增了一个属性cellLayoutMarginsFollowReadableWidth,该属性会影响UITableViewCell在iPad下的显示,且该属性默认为YES

        当你发现在iPad下UITableViewCell不能占满整个UITableView的宽度时,只需将该属性设置为NO即可。

        阅读更多 >>

        iOS判断相册、摄像头权限

        摄像头权限判断

        判断设备是否支持摄像头

          阅读更多 >>

          修改UISwitch大小

          UISwitch大小是不能修改的,iOS7开始,系统将UISwitch大小固定为51x31。

          尽管UISwitch不能通过修改frame的方式修改大小,但是可以通过transform来进行缩放,变相达到我们想要的效果。

          阅读更多 >>

          iOS导航栏透明效果

          你可以直接将下面的代码粘贴到viewDidLoad里面。如果你的场景比较复杂,从A控制器push到B控制器时B控制器需要设置导航栏透明,然后从B控制器pop回A控制器时恢复导航栏原有样式,则建议在B控制器中的viewWillAppear:方法中将导航栏设置成透明,在viewWillDisappear:中恢复导航栏样式。

          阅读更多 >>

          iOS获取一年后的时间

          虽然说是获取一年后的时间,但是可以通过设置不同的数值,达到获取N年前或N年后的时间的效果。
          数值>0时,获取之后的时间,如果数值<0则为获取之前的时间。

          NSDate *date = [NSDate date];

          阅读更多 >>

          Android判断点击区域

          最近项目有这么个需求,后台返回一个图片URL,Android通过该URL加载网络图片,同时需要做到点击图片的不同区域,跳转到不同的Activity页面。此时就需要监听View的点击坐标点以及该坐标点所处的区域。

          需要注意的是,Android中的Rect和iOS中的CGRect的概念有点不一样,iOS中的CGRect通过CGRectMake(x, y, width, height)方法进行创建,而Android中的Rect通过public Rect(int left, int top, int right, int bottom)初始化。iOS中的是xywidthheight,对应的是视图的x坐标点y坐标点视图的宽度值视图的高度值;而Android中的是lefttoprightbottom对应的是视图的视图左边距坐标点视图顶部边距的坐标点视图右边距的坐标点视图底部边距的坐标点。Android中的Rect更类似于iOS中的UIEdgeInsets的概念。

          阅读更多 >>

          用一个仓库管理hexo博客源码与站点文件

          在GitHub上创建一个新仓库,注意命名为username.github.io即可。

          将仓库克隆到本地

          $ cd ~/Documents

          阅读更多 >>

          Python网页爬虫

          最近在自学Python,感谢廖雪峰前辈的Python教程。看了这教程,算是对Python语法有了一点基础,越发地迷上Python,想继续深入学习Python,在网上找了下资料,发现鱼C网站有Python视频教程,更难能可贵的是居然有百度网盘的分享地址,鱼C的教程我并不陌生,之前就看过鱼C出品的汇编语言教程,觉得挺不错的。所以就想着保存一份到自己的网盘上,但是10页数据一共97个视频,难道你还要一个一个点击进入,再点击查看百度网盘的下载地址吗?想想我都觉得要疯了,所以用Python写了这个小脚本,负责抓取所有的百度网盘链接和提取密码,然后调用Mac平台的open命令打开Safari,剩下的事情就简单多了,直接copy提取密码,Command+V然后回车,进去后再保存到自己的网盘。

          阅读更多 >>

          JavaScript实时统计输入框字符数

          该插件提供一下功能

          • 实时统计文本字符数,提醒用户当前还可输入多少字符
          • 限制用户输入的文本长度

          阅读更多 >>

          JavaScript广告轮播插件

          使用示例

          <html>
              <head>
                  <title></title>

          阅读更多 >>

          JavaScript简体繁体互相转换

          使用示例:(简体转繁体)

          把整个页面翻译为繁体中文:

          Zh2tw.startTranlation('tw', null);

          阅读更多 >>