Limon

Limon

11 posts
Website
MongkeyKing

NSURL 解析

在做MonkeyKing的时候,需要解析NSURL,获取里面的参数,写了个Extension。 NSURL Parseer extension NSURL { var prt_URLItems: [String: String]? { let components = NSURLComponents(URL: self, resolvingAgainstBaseURL: false) // 通过 NSURLComponents 获取 URL 的结构 // queryItems 可以拿到所有参数 guard let items = components?.queryItems else { return nil } var infos = [String: String]() items.forEach { //建立字典映射 infos[$0.

  • Limon
    Limon
iOS

通过 Kingfisher Extension 自定义图片处理

惯例先上源码:GitHub源码 对Kingfisher进行了简单的封装, 好处: 1. 在用`pod`管理依赖的情况下,不需要到处`import Kingfisher`。 2. 代码较为集中,方便管理。若以后需要替换`Kingfisher`也很方便。 还可以很集中地添加默认值,在我自己的项目中,全部图片都是默认 let defaultOptions: KingfisherOptionsInfo = [ .Options([.BackgroundDecode, .LowPriority]), .Transition(ImageTransition.Fade(0.55)) ] 如果需要对Kingfisher下载下来的图片需要作特殊处理,例如作圆角处理,但又不想保存两份,怎么办? 在这个Extension中,我简单写了个圆角处理的方法,如果有兴趣,可以看看源码。 原理:直接调用KingfisherManager中的downloadImageWithURL,得到图片,对图片进行处理后再调用KingfisherManager中的storeImage来保存图片。 cell.

  • Limon
    Limon
优雅地自定义XibView

优雅地自定义XibView

好习惯,先上源码。 先创建一个UIView文件和一个Xib文件,在Xib文件里设置如下, 在UIView文件中,不是用-awakeFromNib()作为构造器,而是正常的-init(frame: CGRect)。 override init(frame: CGRect) { super.init(frame: frame) xibSetup() } 而-xibSetup()才是关键,具体可看源码。 如果需要UIView和Xib文件建立控件属性关联,是设置Xib文件的File`s Owner,而不是设置View的Custom Class。 设置了File`s

  • Limon
    Limon
uiwebview

获取 UIWebView 中用户所点击的图片 URL

在使用 UIWebView 的时候 (通常是阅读类的 App),会有点击图片放大的需求,那么可以通过设置 UIWebViewDelegate 来过滤请求,取出图片的 URL 这个方法的前提是 img 标签用一个 a 标签包裹起来了 <a href="http://imageurl"><img src="http://imageurl"></a> extension ViewController: UIWebViewDelegate { func webView(webView: UIWebView, shouldStartLoadWithRequest request:

  • Limon
    Limon
UINavigationBar

隐藏导航栏底部直线

NavigationBar 的底部有一个 ShadowImage 作为阴影,对其隐藏或者显示,可以利用以下的扩展来实现 extension UINavigationBar { func hideBottomHairline() { let navigationBarImageView = hairlineImageViewInNavigationBar(self) navigationBarImageView?.hidden = true } func showBottomHairline() { let navigationBarImageView = hairlineImageViewInNavigationBar(self) navigationBarImageView?.hidden = false } private func hairlineImageViewInNavigationBar(view: UIView) -> UIImageView? { if let view = view as? UIImageView where view.bounds.height

  • Limon
    Limon
UILabel

UILabel UITextView 用 AttributedString 计算文本宽高

在展示列表的时候,虽然 iOS 8 开始可以配合 AutoLayout 自动估算文本的高度,但是当 Cell 比较复杂的时候,还会需要手动去计算。 首先声明一个样式 var TextStyle : [String : NSObject] { get { let paraStyle = NSMutableParagraphStyle() paraStyle.minimumLineHeight = 17.3 paraStyle.lineSpacing = 0 paraStyle.lineBreakMode = NSLineBreakMode.ByWordWrapping paraStyle.paragraphSpacing = 0 paraStyle.paragraphSpacingBefore = 0 return [NSForegroundColorAttributeName: UIColor.blackColor(), NSKernAttributeName: CGFloat(0.

  • Limon
    Limon