iOS 中根据线条的角度不同随机产生颜色

记录下过程其中主要是反正切函数的使用,两点斜率决定线条角度不同。
反正切函数值域范围是不一样的
atan:(-π/2,+π/2),atan2:(-π,+π)

- (UIColor *)lineColor
{
    CGFloat xDs = self.end.x - self.begin.x;
    CGFloat yDs = self.end.y - self.begin.y;

    CGFloat angle = atan2f(xDs,yDs);
    //atan的范围是(-M_PI/2,+M_PI/2)
    //atan2f的值域为(-M_PI,+M_PI),经过先加M_PI 再除M_PI*2 得到范围(0,1)进而符合colorWithHue的范围
    CGFloat cValue = (angle +M_PI )/(M_PI * 2);

    UIColor *color = [UIColor colorWithHue:cValue saturation:1.0 brightness:1.0 alpha:1.0];

    return color;

}
时间: 2024-08-29 17:17:26

iOS 中根据线条的角度不同随机产生颜色的相关文章

iOS中字体样式的设置、颜色、空心、删除线、阴影、斜体、扁平化

不多说直接上代码! 这些知识基本的文字设置,实际上iOS中文字的设置有很多,比如说颜色.空心.删除线.阴影.斜体.扁平化等, NSStrokeWidthAttributeName这个属性所对应的值是一个 NSNumber 对象(小数).该值改变描边宽度(相对于字体size 的百分比).默认为 0,即不改变.正数只改变描边宽度.负数同时改变文字的描边和填充宽度.例如,对于常见的空心字,这个值通常为3.0. 同时设置了空心的两个属性,并且NSStrokeWidthAttributeName属性设置为

如何自定义iOS中的控件

本文译自 How to build a custom control in iOS .大家要是有什么问题,可以直接在 twitter 上联系原作者,当然也可以在最后的评论中回复我. 在开发过程中,有时候UIKit的标准控件并不能满足我们的需求,例如你需要一个控件能支持用户方便的选择0-360°之间的一个角度值,此时就需要根据自己的需求自定义控件了. 对于选择角度值的控件可以这样实现:创建一个圆形的滑块,用户通过拖动手柄操作就能选择角度值.实际上这样的控件在别的一些平台中你可能看到过,但是在UIK

iOS中Animation 动画 UI_22

1.iOS中我们能看到的控件都是UIView的子类,比如UIButton UILabel UITextField UIImageView等等 2.UIView能够在屏幕的显示是因为在创建它的时候内部自动添加一个CALayer图层,通过这个图层在屏幕上显示的时候会调用一个drawRect: 的方法,完成绘图,才能在屏幕上显示 3.CALayer 本身就具有显示功能,但是它不能响应用户的交互事件,如果只是单纯的显示一个图形,此时你可以使用CALayer创建或者是使用UIView创建,但是如果这个图形

iOS中 流媒体播放和下载 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博 iOS中关于流媒体的简介:介于下载本地播放与实时流媒体之间的一种播放形式,下载本地播放必须全部将文件下载完成后才能播放,而渐进式下载不必等到全部下载完成后再播放,它可以一边下载一边播放,在完成播放内容之后,整个文件会保存在手机上. 实时流媒体 实时流媒体是一边接收数据包一边播放,本地不保留文件副本,实时流式传输总是实时传送,可以实时实况转播,支持随机访问,用户可以快进或者快退以观看前面或后面的内容.实时流媒体传输

IOS中NSdate用法

// date方法返回的就是当前时间(now) 02. NSDate *date = [NSDate date]; 03.// now: 11:12:40 04.// date: 11:12:50 05. date = [NSDate dateWithTimeIntervalSinceNow:10];//返回当前时间10秒后的时间 06. // 从1970-1-1 00:00:00开始 07. date = [NSDate dateWithTimeIntervalSince1970:10];//

ios中的事件处理、响应者链条以及第一响应者

在ios中,事件UIEvent类来表示,当一个事件发生时,系统会搜集的相关事件信息,创建一个UIEvent对象,最后将该事件转发给应用程序对象(UIApplication).日常生活中,主要有三种类型的事件:触摸事件,加速计事件以及远程遥控事件.下面是官方的一张图片: 当用户通过以上方式触发一个事件时,会将相应的事件对象添加到UIApplication的事件队列中.UIApplication会循环的从队列中拿出第一个事件来处理.首先将该事件分发给UIApplication 的主窗口对象(KeyW

IOS中的多线程之GCD

在ios中,使用多线程有三种方式,分别是:NSThread.NSOperation和NSOperationQueue.GCD,在本节,主要讲解一下CDD的使用. GCD(Grand Central Dispatch) ,他是基于C语言开发的一套多线程开发机制,也是目前苹果官方推荐的多线程开发方法.GCD的抽象层次最高,用起来比较简单,但是因为它是基于C语言开发的,是面向过程的,所以在使用的时候不如面向对象的好理解.但是GCD这种机制相比较于前面两种多线程开发方式最显著的优点就是它对于多核运算更加

浅谈iOS中的视图优化

引言: 让我们来思考几个问题,你开发过的产品,它还有可以优化的地方吗?能增加它的帧率吗?能减少多余的CPU计算吗?是不是存在多余的GPU渲染?业务这点工作量对于越来越强大的设备面前显得微不足道,但作为一个细心的开发者,我觉得很有必要来谈谈iOS中的视图优化. 本文从开发者最容易犯错的地方出发,结合例子,从以下几个角度阐述如何进行视图优化: Color Blended Layers Color Copied Images Color Misaligned Images Color Offscree

【iOS开发-手势】iOS中各种手势总结

iOS中支持的手势事件 UITapGestureRecognizer(敲击) UIPinchGestureRecognizer(捏合,用于缩放) UIPanGestureRecognizer(拖拽) UISwipeGestureRecognizer(轻扫) UIRotationGestureRecognizer(旋转) UILongPressGestureRecognizer(长按) UITapGestureRecognizer(敲击) //创建UITapGestureRecognizer对象,