简单绘图
来源:互联网 发布:优质三坐标编程 编辑:程序博客网 时间:2024/05/17 05:07
原地址: iOS 5 View Programming & Drawing
1.创建一个工程,选择Single View Application.命名为Circle.
2 创建一个Object-C文件,选择父类UIView,将其命名为CircleView,保存,然后在CircleView.h中添加属性scale.
3.打开CircleViewController.xib.添加View,并将其类名设置为CircleView.然后在其下方再拖入slider控件.
4.分别选中改view和slider控件,按下control键,拉线至CircleViewController.h ,创建输出口.选中slide控件,按下ctr键,拉线至CircleViewController.h,创建Action.
5.在CircleViewController.h中导入CircleView类.并在其实现类中,完善slide--Action的方法.
6.在CircleView中对绘图做处理.
相关代码如下:
CircleViewController.h
#import <UIKit/UIKit.h>#import "CircleView.h"@interface CircleViewController : UIViewController{ CircleView *circle; UISlider *slider; }@property (strong, nonatomic) IBOutlet CircleView *circle;@property (strong, nonatomic) IBOutlet UISlider *slider;- (IBAction)slide:(id)sender;@end
CircleViewController.m
#import "CircleViewController.h"@interface CircleViewController ()@end@implementation CircleViewController@synthesize circle;@synthesize slider;- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.}- (void)viewDidUnload{ [self setCircle:nil]; [self setSlider:nil]; [super viewDidUnload]; // Release any retained subviews of the main view.}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);}- (IBAction)slide:(id)sender { UISlider *s = sender; self.circle.scale = s.value; [self.circle setNeedsDisplay];}@end
CircleView.h
#import <UIKit/UIKit.h>@interface CircleView : UIView@property double scale;@end
CircleView.m
#import "CircleView.h"@implementation CircleView@synthesize scale;- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { [self setup]; // Initialization code } return self;}- (void)awakeFromNib{ [self setup];}- (void)setup{ self.contentMode = UIViewContentModeRedraw;}- (void)drawCircle:(CGPoint)p withRadius:(CGFloat)radius inContext:(CGContextRef)context{UIGraphicsPushContext(context);CGContextBeginPath(context);CGContextAddArc(context, p.x, p.y, radius, 0, 2*M_PI, YES);CGContextStrokePath(context);UIGraphicsPopContext();}- (void)drawRect:(CGRect)rect{CGPoint point;point.x = self.bounds.origin.x + self.bounds.size.width/2; point.y = self.bounds.origin.y + self.bounds.size.height/2; CGFloat size = self.bounds.size.width / 2;if (self.bounds.size.height < self.bounds.size.width) size = self.bounds.size.height / 2;size *= 0.90; if (self.scale >= 0) size *= self.scale; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetLineWidth(context, 5.0);[[UIColor redColor] setStroke]; [self drawCircle:point withRadius:size inContext:context];}@end
根据slide的value值的大小而改变CircleView的view.
- 当需要重新绘制试图时,ios调用drawRect 重画视图内容.
- drawRect不会被直接调用.
- 当发送 setNeedsDisplay 消息时,drawRect方法就被调用.
- 简单绘图
- 简单绘图
- 简单绘图类
- c# GDI+简单绘图
- 第四章、简单绘图
- 四.简单绘图
- MFC 简单绘图
- 2 简单绘图
- wince简单绘图
- c# GDI+简单绘图
- VC中的简单绘图
- c# GDI+简单绘图
- API简单绘图
- API简单绘图2
- API简单绘图3
- mfc-简单绘图
- qt4 简单绘图
- 简单小程序绘图
- 委托
- lpc1768 时钟与定时器
- Invalidate、InvalidateRect详解
- 小结REDHAT5+11G R2+ASM+ISCSI(OPENFILER)布署【补充中】
- linux socket多路复用服务器
- 简单绘图
- 程序员被提bug之后的反应
- RHEL(RedHat Enterprise Linux)5/6 ISO镜像下载
- 二级联动 三级联动 多级联动
- Android开发之UI库及组件资源
- 接口的基本使用
- 解决不使用Android NDK编译的bin文件No such file or directory问题
- struts中接收数组的表单和ajax两种形式
- 可以在线编译代码的网站