英文:TOPE

作者:星夜暮晨

网址:http://www.jianshu.com/p/88263196fdf0

设计师们似乎拥有着我们这些开发者所没有的“魔力”,他们知道如何让一个应用的界面看起来非常得舒适,以至于有时让我们有了迫不及待将其复现的冲动。

然而,几天过去了,我们仍然还停留在设计稿的第一个界面,写下大段大段的代码,可是界面却不是我们想要的那个样子,这无疑是非常让人恼火的一件事情。

好消息是设计师们的“魔力”并不是我们想象中的那么神奇,有一些关于设计的小技巧。只要掌握了它们,我们就能够以最小的代价让用户界面变得好看起来。

今天,我将会给大家展示其中的一些小技巧,我更乐意将它们称之为“图片标记技巧”,大意就是如何在一幅图片上放文字会更加好看。我们在我们的iOS模板中使用了这些技巧,这也是我们为何能够搭建出色用户界面的诀窍之一。

这些设计理念也可以用在表视图单元格(Table View Cell)和集合视图(Collection View)当中。

我们并不能直接将文字扔到图片上面,然后指望它Duang地一下出现那个Feel。不过,跟随以下6条小技巧就能够实现我们的目的了:

1:加文字

嗯,我不会忘记我说过,直接将文字扔到图片上面并不能让它变得号看起来。不过有些时候我们或许会走狗屎运,就像下图这个例子一样。这种设计看起来很赞,是因为标题比其他文字元素要显得更大一些。

并且,这种效果一般只会发生在文字在图片的深色部分上面。如果不是这种情况,那么就会像下面这个例子一样。现在我们换了一个有其他封面的文章,啊偶,GG。

好吧,怎么办?

2:加图片遮罩

我们可以直接在图片上加一个遮罩,技巧就是通过这个遮罩让图片变得更暗、更透明,或者直接刷上颜色,就像Yahoo新闻做的那样。

好的,在这个例子中,由于底色是蓝色,文字颜色是白色,所以看起来效果很赞。

下面这个例子是我们目前正在制作的项目截图,接下来就是我们实现这个效果的代码:

func addFullOverlay(){

let overlayView = UIView(frame: CGRectZero)

overlayView.translatesAutoresizingMaskIntoConstraints = false

overlayView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)

self.view.insertSubview(overlayView, aboveSubview: coverImageView)

let topConstraint = NSLayoutConstraint(item: overlayView, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: 0)

let leftConstraint = NSLayoutConstraint(item: overlayView, attribute: .Left, relatedBy: .Equal, toItem: self.view, attribute: .Left, multiplier: 1, constant: 0)

let rightConstraint = NSLayoutConstraint(item: overlayView, attribute: .Right, relatedBy: .Equal, toItem: self.view, attribute: .Right, multiplier: 1, constant: 0)

let bottomConstraint = NSLayoutConstraint(item: overlayView, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1, constant: 0)

view.addConstraints([topConstraint, leftConstraint, rightConstraint, bottomConstraint])

}

不过这个效果不是很理想,因为图片现在的颜色很阴暗,文字就特别突兀,不过这个效果或许就是您追求的效果。通过给遮罩添加一下着色,我们就可以像instagram那样,给图片加个“滤镜”的效果,就像下图所展示的那样。

我们只需给这个半透明的遮罩加上颜色就可以了:

overlayView.backgroundColor = UIColor(red: 0.5, green: 0.2, blue: 0, alpha: 0.5)

3:加文字背景

某些人并不喜欢遮罩这个做法,因为他们可能想让图片保持“原汁原味”。这样的话,我们就要使用这个技巧了,就如“Funny or Die”所做的那样。

那我们的项目来距离,我们可以给文字加上背景。通过文本的NSAttributed属性,我们可以轻易地完成这项操作。

实现这项效果的代码如下:

func addBackgroundColorToText() {

let style = NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy() as! NSMutableParagraphStyle

style.firstLineHeadIndent = 10.0

style.headIndent = 10

style.tailIndent = 0

let attributes = [NSParagraphStyleAttributeName : style]

let attributedTitleText = NSAttributedString(string: "Supplier woes suggest Apple Watch sales aren't great", attributes: attributes)

titleLabel.attributedText = attributedTitleText

let textbackgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.6)

titleLabel.backgroundColor = textbackgroundColor

authorLabel.backgroundColor = textbackgroundColor

dateLabel.backgroundColor = textbackgroundColor

}

4:加有颜色的背景

呃,和上面那个效果类似,如果您不喜欢黑色的话,那么可以更换文字背景的颜色,这样就有了“有颜色的文字背景”。至于如何实现这个效果,就留给您去尝试了O(∩_∩)O~。关键在于找到图片的主色,然后将其设置为背景颜色。

5:加毛玻璃

这是我最喜欢的效果,没有之一。通过iOS 8提供的UIVisualEffectView类,我们可以轻松地实现这个效果。我们在Newsstand例程中使用了这项效果。通过将文本下方的图片加上毛玻璃效果,可以让文字变得更加易读。

以下是实现这个效果的代码:

func addBlurView(){

let effect = UIBlurEffect(style: .Light)

let overlayView = UIVisualEffectView(effect: effect)

overlayView.translatesAutoresizingMaskIntoConstraints = false

self.view.insertSubview(overlayView, aboveSubview: coverImageView)

let topConstraint = NSLayoutConstraint(item: overlayView, attribute: .Top, relatedBy: .Equal, toItem: self.titleLabel, attribute: .Top, multiplier: 1, constant: -30)

let leftConstraint = NSLayoutConstraint(item: overlayView, attribute: .Left, relatedBy: .Equal, toItem: self.view, attribute: .Left, multiplier: 1, constant: 0)

let rightConstraint = NSLayoutConstraint(item: overlayView, attribute: .Right, relatedBy: .Equal, toItem: self.view, attribute: .Right, multiplier: 1, constant: 0)

let bottomConstraint = NSLayoutConstraint(item: overlayView, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1, constant: 0)

view.addConstraints([topConstraint, leftConstraint, rightConstraint, bottomConstraint])

}

6:加暗色渐变

这是我第二喜欢的效果,有些时候甚至比毛玻璃还要好看一些。

这个效果是通过在文本下方加上一个“暗色渐变”(gradient fade)的图层,颜色从半透明的黑色渐变到不透明的黑色,看起来效果很赞。

这个效果用在了很多应用上面,比如说Flipboard以及许多博客应用上发。我们也可以发现在Hotel Tonight应用中也应用了这个效果。

要实现这个效果,您可以使用以下代码:

func addGradientOverlay(){

self.view.insertSubview(gradientView, aboveSubview: coverImageView)

gradientLayer.frame = gradientView.bounds

let opaqueBlackColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1.0).CGColor

let transparentBlackColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.0).CGColor

gradientLayer.colors = [transparentBlackColor, opaqueBlackColor]

gradientView.layer.insertSublayer(gradientLayer, atIndex: 0)

gradientView.translatesAutoresizingMaskIntoConstraints = false

self.view.insertSubview(gradientView, aboveSubview: coverImageView)

let topConstraint = NSLayoutConstraint(item: gradientView, attribute: .Top, relatedBy: .Equal, toItem: self.titleLabel, attribute: .Top, multiplier: 1, constant: -60)

let leftConstraint = NSLayoutConstraint(item: gradientView, attribute: .Left, relatedBy: .Equal, toItem: self.view, attribute: .Left, multiplier: 1, constant: 0)

let rightConstraint = NSLayoutConstraint(item: gradientView, attribute: .Right, relatedBy: .Equal, toItem: self.view, attribute: .Right, multiplier: 1, constant: 0)

let bottomConstraint = NSLayoutConstraint(item: gradientView, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1, constant: 0)

view.addConstraints([topConstraint, leftConstraint, rightConstraint, bottomConstraint])

}

下载示例项目

是不是很喜欢这些效果呢?现在您已经知道如何实现,那么就可以在您的应用中使用它们了。点击此处(http://www.appdesignvault.com/downloads/FontOnImages.zip)来下载示例项目,这样可以看到所有已实现的效果。

关于更多设计技巧相关的内容,可以参阅Medium网站上的文章。如果您有更好的想法,请与我联系。

转载于:https://www.cnblogs.com/xvewuzhijing/p/5003780.html

iOS开发学无止境 - 6个iOS图片文本设计的小技巧相关推荐

  1. iOS开发系列--无限循环的图片浏览器

    概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件都介绍一遍确实没有必要,所谓授人以鱼不如授 ...

  2. IOS开发基础之截图、图片文字水印

    IOS开发基础之截图.图片文字水印 项目源码在我的主页里面. // // ViewController.m // 31-屏幕截图 // // Created by 鲁军 on 2021/2/22. / ...

  3. iOS开发:利用SDWebImage实现图片加载与缓存

    iOS开发:利用SDWebImage实现图片加载与缓存 SDWebImage是一套开源框架,这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL ...

  4. 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营

    编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,快速了解Xcode这个开发iOS应用程序的主要工具.   ...

  5. 《iOS开发全然上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营...

         编写Hello World应用程序通常被觉得,是学习不论什么编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,高速了解Xcode这个开发iOS应用程序的主 ...

  6. 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C

    2019独角兽企业重金招聘Python工程师标准>>> 编写Hello World应用程序通常被认为,是学习任何编程语言的第一步.在这一章,你将创建iOS版的Hello World应 ...

  7. iOS 开发,该如何解决弹窗的设计问题?

    本文讲的是iOS 开发,该如何解决弹窗的设计问题?, iOS 9 的页面用了一种我们不能复现的方式去展示一个活动视图控制器,并且当从内部表单和弹窗呈现操作列表和活动视图控制器时 UIKit 的行为一开 ...

  8. iOS 开发:彻底理解 iOS 内存管理(MRC 篇)

    本文首发于我的个人博客:「程序员充电站」 文章链接:「传送门」 本文更新时间:2021年08月17日17:11:59 本文是 「iOS 开发:彻底理解 iOS 内存管理」系列的「MRC 篇」. 用来对 ...

  9. 小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth

    小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth 本项目为对小米手环进行二次开发,利用了小米手环蓝牙连接并不安全的特性,连接后可以获取手环数据,并可修改数据. 本实例使用Swif ...

最新文章

  1. LabVIEW生成应用程序(exe)和安装程序(installer)
  2. 网络爬虫介绍||为什么学网络爬虫
  3. 多线程:happens-before 先行发生原则
  4. 【Linux网络编程】无连接和面向连接协议
  5. DG导入mysql依赖包_MySql导入导出数据库(含远程导入导出)
  6. Underscore.js Version (1.2.3) 中文文档
  7. 基础知识(五)对齐变换相关函数
  8. jquery.validate
  9. C语言基础教程之储存类
  10. OS_windows_性能监视器资源监视器任务管理器:指标阅读与使用/关闭/调整虚拟内存/android内存调度
  11. 飞控计算机的作用,自动飞控计算机测试系统
  12. 阿里云不同账号新旧服务器镜像迁移数据迁移同步
  13. 在计算机中有什么作用,内存是什么在电脑中有什么作用
  14. 关于单片机PDR和POR应用注意事项
  15. CRA模式下的效验标准体系,php最新含量技术
  16. abp框架学习笔记(三)--Angular和前端
  17. 苹果加入造车潮,自动驾驶离我们还远吗?
  18. 香侬科技 Shannon.AI 招聘自然语言处理、计算机视觉工程师
  19. 西门子plc怎么转到c语言,西门子PLC梯形图和指令表相互转换
  20. DNS劫持有什么危害?

热门文章

  1. Win11 中【使用我的登录信息在更新后自动完成设置】以 「登录前自启」
  2. java计算机毕业设计干洗店订单管理系统设计与实现源码+mysql数据库+系统+lw文档+部署
  3. 黑龙江省赛 A Path Plan(组合数学+Lindstrom-Gessel-Viennot Lemma定理)
  4. 滴滴Logi-KafkaManager对接夜莺实现告警配置
  5. [RK3399] [Android7.1] UAC配置,使用USB转音频喇叭播放声音
  6. 【FPGA】Vivado状态机设计
  7. BFC、IFC、GFC、FFC概念理解、布局规则、形成方法、用处浅析
  8. 付给铁匠的账单 数据结构
  9. latex 的“对号”的几种表示
  10. 我能把你的美丽比作月亮吗