首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS 开发仿网易云音乐歌词海报

设计思路: 解析歌词文件,在界面上用UITableView加载 长按界面,将UITableView切换至可编辑状态 将选中的歌词保存 根据歌词的数量在UIImageView上动态创建UILabel 将UIImageView...上面我们只是将歌词文件转化为数据存储到了我们的内存中,接下来要把这些数据显示给用户,这里我们就要用到UITableView这个强大的控件了....stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight; 往往会将拉伸的大小设置为1像素...)capInsets resizingMode:(UIImageResizingMode)resizingMode 有人可能会问,为什么不用图形上下文的方式在背景图片上绘制文字,我之前已尝试过但是生成海报后的像素实在是令人捉急...,于是就把这个思路给pass了;后来经过仔细分析,通过在UIImageView中添加subView也就是UILabel,然后通过以下代码生成的海报达到的效果令人满意,代码如下: 最终的效果图如下:

62330

如何把设计图自动转换为iOS代码? 在线等,挺急的!

这是一个可以节省 70% 工作量的话题 我觉得,如果真的能把一张设计图自动转换为代码,任何开发工程师都会感兴趣的.单以 iOS 应用为例, 在一个最常用的MVC架构的APP中,主要的代码,无非就是集中于...我想我对编程本身确实是感兴趣的,但是整天浪费时间在 UI上,真的感觉有点虚度光阴.所以说,在本不充裕的空闲里,我一直在思考的一个命题就是: 如何实现 UI 的自动化与独立化....* 使用方法: 在xib或storyboard中,将某一用于占位的view的 custom class 设为对一个的 component, 则初始化时,会自动使用此component对应的xib文件中的内容去替换对应位置...因为我们是基于比例来添加约束,不同屏幕下,会自动等比变换.....在以后的工作和学习中,我会继续使用与完善,以期进一步提高写UI界面的效率.可能尚有不完备之处,欢迎大家共同提出讨论.

1.4K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    IOS开发之视图和视图控制器

    我们空工程的文件结构如下,我们只需在AppDelegate.m中添加我们的视图,还是那句话为了更好的理解我们的视图,所有视图的创建和配置我们都用代码编写。 ?         ...我们还可以把视图看做是一个视图容器,视图上面还可以添加一个子视图。往父视图中添加的SubView会被放在一个数组中。...往我们SuperView中添加的SubView的坐标和index都是相对于我们的父视图来配置的。我们为上面的视图在添加一个subView,代码如下: ?         ...在本文刚开始的时候我们加入的view的代码都是在AppDelegate.m的文件里加的,其实没没那么做的,如果我们一直在上面的文件中实例化我们的各种控件,我们的应用程序代码会非常难维护。...,在AppDelegate.m中实例化MainViewController并添加到window中,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 - (BOOL)application

    1.8K70

    深入详解iOS适配技术

    前言 iPhone自诞生以来,随着其屏幕尺寸不断的多样化,屏幕适配的技术一直在发展更新。...毕竟,storyboard中的属性最终还是会翻译成可执行的代码,只不过XCode利用可视化的storyboard工具帮助我们完成了代码完成的事情。...Snip20160515_3.png 4.如果view的约束只和自己有关系,那么添加到自己身上。比如宽高约束。 UILabel使用AutoLayout UILabel默认内容的显示方式是垂直居中的。...如果用autolayout给UILabel设置约束,只需要设置x、y、width,无需设置height,UILabel会自动包裹内容,并且随内容的多小而变化。...父控件随子控件变化而变化 如果希望父控件随子控件(UILabel/UIView)高度的变化而变化,就不要给父控件添加高度约束,只需要子控和向父控件在垂直方向上添加约束,这样子控件高度改变,父控件高度也会随之改变

    8.5K70

    iOS性能优化系列篇之“列表流畅度优化”

    可在子线程中进行的任务 * 图片解码 * 文本渲染,UILabel和UITextview都是在主线程渲染的,当显示大量文本时,CPU的压力会非常大。...UIView层级太多,会导致创建、布局等较耗时,可以尽量扁平化,甚至可以异步在子线程画到一个Image上。...通过在保证色彩不失真的基础上,使用更少的数据量,去表达一个像素的颜色。...,在iOS8之后,UILabel使用的是CALayer作为底图层,而在iOS8开始,UILabel的底图层变成了\_UILabelLayer,绘制文本也有所改变。...但是光栅化原始图像需要时间,而且会消耗额外的内存。光栅化也会带来一定的性能损耗,是否要开启就要根据实际的使用场景了,图层内容频繁变化时不建议使用。

    2.6K30

    iOS小技能(开发规范): weak和strong修饰符的规范使用

    引言 在oc 中,如果对象没有被强引用,会被立即释放。...如果是采用纯代码搭建界面,控件可以使用strong进行修饰;因为此时控件的对象的两个强引用(ViewController的noLable,以及view的subview)都会随着控制器ViewController...对象,所以这个UILabel对象已经有拥有者,不会被放--再添加过程都是操作UILabel对象的地址 oc中释放对象的过程: 释放对象的过程: 程序先对控制器进行释放,如果没有对象对View进行强引用...内存中如果没有存在对subviews 对象进行强引用,就释subviews。此时如果UILabel对象没有被强引用,UILabel对象将被释放 。...一只狗在那” 只要狗一直被栓着,小孩就能看到狗,(weak指针)会一直指向它。只要狗的牵绳脱落,狗就会跑掉,不管有多少小孩在看着它。

    92450

    View编程指南(三)

    如果您希望以编程方式创建view,请创建并初始化它们,然后使用以下方法将它们排列为层次结构: 要将subview添加到superview,请调用superview的addSubview:方法。...在list中间插入一个subview可视化地将该view放置在列表中稍后的任何view的后面。...当subview添加到其父项时,subview的当前frame矩形表示它在superview内的初始位置。frame位于其superview的可见边界之外的subview在默认情况下不会被剪切。...一个地方你可以添加subview到view层次结构是在VC的loadView或viewDidLoad方法。...图显示了一个转换过程中如何导致矩形大小改变的例子。 在图中,外部父view包含旋转的subview。 将subview坐标系中的矩形转换为父坐标系,得到一个物理上较大的矩形。

    1.8K30

    【IOS】IOS开发问题解决方法索引(六)

    分辨率414x736,像素1242x2208,@3x 这里所注的都是已经添加相关尺寸loading图后的开发分辨率和像素数,其中iphone6plus最终的物理分辨率会被苹果自动缩放到1080p(缩放比例...中添加子View后,页面控件不显示问题 问题: 在Storyboard的一个ViewController中添加子View后,再在代码中新建一个子View来替代此View,导致在代码中添加按钮控件...的ViewController中添加的子View已经实例化了,通过简单地替换操作,不会使其实例自动释放,因为已经作为子View,添加进ViewController所在的View中了。...需要手动先将其从SuperView移除,然后再重新添加新View的实例。 //初始化地图View if (!...19 【UILabel】自适应高度和自动换行 1. //初始化label 2.

    87330

    iOS性能优化-iOS 页面优化

    异步图片解码 系统会默认在UIImage加载到UIImageView或者CALayer的content上的时候,在主线程进行解码。...对于一些复杂的view样式,可以通过多个subView组合到一起来实现,尽量减少draw的操作,就可以减少这部分内存的消耗。...正常情况下,系统会按照60FPS或者120FPS的频率来执行渲染流程。 在每个屏幕渲染周期内,系统会从帧的缓冲区里拿到已经渲染好的数据,渲染到屏幕上。...造成离屏渲染的方式 关于离屏渲染,实际开发中基本上都是: 圆角+剪裁的组合 设置layer的mask 设置阴影 光栅化 抗锯齿 解决离屏渲染 对于设置阴影造成的离屏渲染,解决方式就是使用贝塞尔曲线绘制好...但是在实际操作过程中,觉得这一步还是有问题的。 问题一:内存占用增加 在滑动列表里,我们不可能一直不停地对图片进行切圆角操作。 不然就需要一直消耗CPU进行切圆角操作,还要频繁切换线程。

    2.6K21

    RunLoop总结:RunLoop的应用场景(三)滚动视图流畅性优化

    简单描述一下这种做法: 首先创建一个单例,单例中定义了几个数组,用来存要在runloop循环中执行的任务,然后为主线程的runloop添加一个CFRunLoopObserver,当主线程在NSDefaultRunLoopMode...关于这一点,人眼能识别的帧率是60左右,这也就是为什么,电脑屏幕的最佳帧率是60Hz。...屏幕一秒钟会刷新60次(屏幕在一秒钟会重新渲染60次),那么每次刷新界面之间的处理时间,就是1/60,也就是1/60秒。也就是说,所有会导致计算、渲染耗时的操作都会影响UITableView的流畅。...关于这一点,我以前的做法是在Cell中定义一个public方法,用来计算Cell高度,然后计算完高度后,将高度存储在Cell对应的Model中(Model里定义一个属性来存高度),然后在渲染Cell时,...这样在为Cell各个子控件赋值时,仅仅是取值、赋值,在计算Cell高度时,也仅仅是加法运算。 3.界面中背景色透明的视图过多 为什么界面中背景色透明的视图过多会影响UITableView的流畅?

    2.2K41

    Masonry

    ,平时在我们开发当中,我们可能需要通过初始化来确定一些属性的值,并不想由外界来修改它,于是我们可能会需要些很多个initWith方法,加入我的这个对象有姓名、性别、年龄等属性,但是我初始化的时候,并不是所有地方都要知道这些信息...*make))block; NS_NOESCAPE用于修饰方法中的block类型参数,作用是告诉编译器,这个block在mas_makeConstraints:方法返回之前就会执行完毕,而不是被保存起来在之后的某个时候再执行...在我们开发过程中,我们会经常用到UILabel,每次初始化都要设置一堆的属性,比较麻烦,当然我们也可以采取类似如下方法:+ (UILabel *)createLabelWithFont:(UIFont...,只初始化我们需要的 总结 另外很多人担心自动布局的性能问题,事实上苹果已经在iOS12中对auto layout进行优化: WWDC2018讲解了iOS12优化后的表现 ?...可以看到在iOS12之前auto layout性能会随着嵌套视图的增加呈指数增长,但是在iOS12上苹果官方已经对此进行了优化,随着嵌套视图的增加性能问题得到了大幅的提升。

    1.1K10

    iOS 页面优化

    异步图片解码 系统会默认在UIImage加载到UIImageView或者CALayer的content上的时候,在主线程进行解码。...对于一些复杂的view样式,可以通过多个subView组合到一起来实现,尽量减少draw的操作,就可以减少这部分内存的消耗。...正常情况下,系统会按照60FPS或者120FPS的频率来执行渲染流程。 在每个屏幕渲染周期内,系统会从帧的缓冲区里拿到已经渲染好的数据,渲染到屏幕上。...造成离屏渲染的方式 关于离屏渲染,实际开发中基本上都是: 圆角+剪裁的组合 设置layer的mask 设置阴影 光栅化 抗锯齿 解决离屏渲染 对于设置阴影造成的离屏渲染,解决方式就是使用贝塞尔曲线绘制好...但是在实际操作过程中,觉得这一步还是有问题的。 问题一:内存占用增加 在滑动列表里,我们不可能一直不停地对图片进行切圆角操作。 不然就需要一直消耗CPU进行切圆角操作,还要频繁切换线程。

    90100

    浅谈 iOS AutoLayout 中 Label 的抗拉伸和抗压缩

    UIView 中关于 Content Hugging 和 Content Compression Resistance 的方法有: - (UILayoutPriority)contentHuggingPriorityForAxis...使用场景: 当一个视图上有多个 intrinsic content size 的子控件,并且子控件可能会超出父视图的区域时,此属性可控制哪些视图被内容被优先压缩,使其不超出父视图区域。...举例说明 Content Compression Resistance Priority 在 View 中添加了一个 UILabel: - (void)demo1 { UILabel...因为左右约束的优先级比固有内容相关的优先级要高,所以 Autolayout 布局的时候会优先满足左右两个约束。这时候:左边约束宽度 + 右边约束宽度 + Label 的固有内容宽度 > 屏幕宽度。...Content Hugging Priority 在 View 中添加了一个 UILabel: - (void)demo2 { UILabel *bluelabel = [[UILabel

    5.5K31

    View编程指南

    当一个view包含另一个view时,两个view之间会创建一个父子关系。关系中的子view称为subview,父View称为superview。...如果两个兄弟子view彼此重叠,则最后添加的子view(或移动到子view数组的末尾)会出现在另一个之上。 Superview - subview关系也会影响多个view的行为。...在启动任何绘图操作之前,系统等待直到当前run loop的结束。这种延迟使您有机会使多个view失效,从您的层次结构中添加或删除view,隐藏view,调整view大小,并一次重新定位view。...当拉伸View时,系统将这些归一化值乘以view的当前边界和比例因子,以确定哪些像素或像素需要拉伸。每当View边界发生变化时,使用规范化值就可以减少更新contentStretch属性的必要性。...不要通过嵌入subview来自定义控件 虽然在技术上可以将subview添加到标准系统控件(从UIControl继承的对象),但不应该以这种方式定制它们。

    2.3K20

    【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    框架和库一旦被添加到该目录后, 会自动链接到应用中, IOS 应用可以调用这些资源 和 库中的类 和 函数; -- 系统默认框架 : Foundation.framework, CoreGraphics.framwork...: 在 Text 属性下面有一个文本框, 在这个文本框中输入要显示的文本内容; (2) Color 属性 Color 属性 : 控制 UILabel 中的文本颜色; (3) Font 属性 Font..., 保证 UILabel 能容纳这些文本中的内容; (9) Highlighted 属性 Highlighted 属性 :  -- 作用 : 为 UILabel 中的文本设置高亮显示, 前提 Behavior...UIWindow 中; -- 设置 storyboard : 点击 项目选项 , 在 General 选项卡中, 选择左侧 TARGETS, 选中对应项目, 在 Main Interface 中选择...回调该方法; -- "willMoveToSuperview : " 方法 : 在将要添加到父控件之前, 回调该方法; -- "didMoveToWindow : " 方法 : 将控件添加到窗口完成时

    5K30
    领券