编程开发 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> IOS开发 -> DrawRect方法怎么在ViewController里调用? -> 正文阅读
 

[IOS开发]DrawRect方法怎么在ViewController里调用?[第1页]

UIView DrawRect ViewController iOS
我自定义了一个UIView的子类并创建了DrawRect方法,但是在ViewController里用SetNeedDisplay方法想调用DrawRect,结果没有显示DrawRect方法,该怎样调用才能把DrawRect方法显示出来?求大神告知,谢谢!


回复:
drawRect方法,决定了View长啥样默认情况下,draRect: 方法啥都不做,交给UIView的子类去实现这个方法,让子类有不同的样子。例如,UIButton的drawRect:方法可以绘制一个圆角的四方形,并在正中显示标题字符串。当你覆盖drawRect方法的时候,系统会为View准备一个graphics context, 接着系统会激活这个context,然后调用需要绘图的UIView对象的drawRect方法。我们可以通过UIGraphicsGetCurrentContext方法来获取已经激活的context, 这个context的类型就是CGContextRef,它负责合并然后生成一个image。这个image就是View最终的样子。


(void)drawRect:(CGRect)dirtyRect {
  CGContextRef ctx = UIGraphicsGetCurrentContext();   CGRect bounds = [self bounds];

  center.x = bounds.origin.x + bounds.size.width / 2.0;   center.y = bounds.origin.y + bounds.size.height / 2.0;

  float maxRadius = hypot(bounds.size.width, bounds.size.height) / 4.0;

  CGContextStrokePath(ctx);
}


回复:
引用 1 楼 zhumj_zhumj 的回复:drawRect方法,决定了View长啥样默认情况下,draRect: 方法啥都不做,交给UIView的子类去实现这个方法,让子类有不同的样子。例如,UIButton的drawRect:方法可以绘制一个圆角的四方形,并在正中显示标题字符串。当你覆盖drawRect方法的时候,系统会为View准备一个graphics context, 接着系统会激活这个context,然后调用需要绘图的UIView对象的drawRect方法。我们可以通过UIGraphicsGetCurrentContext方法来获取已经激活的context, 这个context的类型就是CGContextRef,它负责合并然后生成一个image。这个image就是View最终的样子。


(void)drawRect:(CGRect)dirtyRect {
  CGContextRef ctx = UIGraphicsGetCurrentContext();   CGRect bounds = [self bounds];

  center.x = bounds.origin.x + bounds.size.width / 2.0;   center.y = bounds.origin.y + bounds.size.height / 2.0;

  float maxRadius = hypot(bounds.size.width, bounds.size.height) / 4.0;

  CGContextStrokePath(ctx);
}

UIViewController不是UIView的子类。
UIViewController和Uiview是两个不同的类,UIViewController是视图控制器 ,而UIView是视图,也就是说,UIViewController是控制UIView的。

回复:
谢谢热心回答。
我把当前运行的类改为这个自定义的类(自定义类基于UIView),根据log输出内容来看,虽然是运行自定义的类,但是自定义类里面的方法没有运行,还是显示ViewController里的方法,这是怎么回事?只有把ViewController里面的方法都忽略了后才显示自定义类里方法,该怎样让ViewController和自定义类的方法同时运行?


回复:
引用 3 楼 sixgod001 的回复:谢谢热心回答。
我把当前运行的类改为这个自定义的类(自定义类基于UIView),根据log输出内容来看,虽然是运行自定义的类,但是自定义类里面的方法没有运行,还是显示ViewController里的方法,这是怎么回事?只有把ViewController里面的方法都忽略了后才显示自定义类里方法,该怎样让ViewController和自定义类的方法同时运行?

你ViewController里面的firstview把自定义的视图覆盖掉了而已

回复:
谢谢! 这个问题困扰好几天了还是没解决,自学好慢

回复:
引用 5 楼 sixgod001 的回复:谢谢! 这个问题困扰好几天了还是没解决,自学好慢
你是在看iOS programming第四版吧,这是同心圆视图是不?你遇到的问题表达不清楚,我自学时也是用这本书,感觉你是不是现在在做触摸屏幕时不能让它改变颜色是么?还是别的?

回复:
引用 6楼进军编程 的回复:Quote: 引用 5 楼 sixgod001 的回复:
谢谢! 这个问题困扰好几天了还是没解决,自学好慢
你是在看iOS programming第四版吧,这是同心圆视图是不?你遇到的问题表达不清楚,我自学时也是用这本书,感觉你是不是现在在做触摸屏幕时不能让它改变颜色是么?还是别的?是的,就是iOS Programming的第四版里画同心圆的那个章节。书太老了,照着书本里的方法实在是实现不了,卡在这里好长时间,郁闷啊!

回复:
你在哪里创建的自定义的view视图?

回复:
引用 8楼yangtengfei1993030 的回复:你在哪里创建的自定义的view视图?在Hypnosis里创建的,继承UIView

回复:
需要在viewController中设置自定义UIView的frame

回复:
  IOS开发 最新文章
求大神们的指点!
DrawRect方法怎么在ViewController里调用?
请教下socket和http在客户端网络请求中的区
iOS app怎么限制使用地区?
Xcode升级到9.0后遇到的问题,1 duplicate
求iOS11.0.2 真机测试包~
iOS DLNA开发,有做过同样功能的朋友求解救
base64解密求助
北京PK10稳赚技巧群473727795之选号技巧
oc和c++混编
上一篇文章      下一篇文章      查看所有文章
加:2017-10-30 04:17:28  更:2017-10-30 04:20:50 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年6日历
2018-6-19 22:18:27
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库