我有一个项目,我必须在按钮clcik上制作一个正方形和圆圈。
在按钮之前有textfileds,在textfiled上我们给出45之类的值,点击uibutton动作执行,45 square将自动调整iphone scfreen本身。
假设屏幕尺寸为320 * 480,那么方形会随着屏幕自动调整。
如果我们在Textfiled上给出值300,则300个方块将在屏幕上自动创建和调整。
如果我们给1500这样的值,它将在一个阶段显示为方格纸。
我不知道该怎么做以及如何开始和从哪里开始。
我只是认为它会使用Quartcore Framework,但我没有任何想法,我从哪里开始我搜索的项目。
我想要专家的建议和想法。 非常欢迎来自专家的任何想法或建议。
答案 0 :(得分:0)
创建一个按钮,一个标签和两个文本字段(一个用于高度,一个用于宽度)。在标签上设置1像素边框,并将标签的宽度和高度设置为屏幕大小。为按钮创建IBAction,并根据文本域内的内容指定标签的宽度和高度。这将创建广场。要创建圆,您可以使用QuartzCore并将角半径设置为高度/宽度的一半,也可以以编程方式绘制。这是实现您所要求的最快捷方式,而不会过多地使用GL在屏幕上绘图,并且是了解操作和输入如何工作的良好开端。
答案 1 :(得分:0)
// Step 1 : Add QuartzCore.framework in your project
// Step 2 : Create following two files .h and .m
// Step 3 : How to Use
// Import your custom file
#import "myDrawingView.h"
// Create object and add to your viewcontroller
myDrawingView *obj = [[myDrawingView alloc] initWithFrame:self.view.frame];
[obj drawSquaresWithNumber:17 andSize:self.view.frame.size];
[self.view addSubview:obj];
//------------------------------------------------------
// filename : myDrawingView.h
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
@interface myDrawingView : UIView
{
int nSquares;
CGSize mazeSize;
}
- (void)drawSquaresWithNumber:(int)numberOfSquares andSize:(CGSize)screenSize;
@end
//------------------------------------------------------
// filename : myDrawingView.m
#import "myDrawingView.h"
@implementation myDrawingView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
// Calculate height and width for each sqaure.
float area = mazeSize.height*mazeSize.width;
float squareSize = (area/nSquares)/100;
NSLog(@"row : %f %f",mazeSize.width/squareSize,mazeSize.height/squareSize);
int row, col;
row = ceil(mazeSize.width/squareSize);
col = ceil(mazeSize.height/squareSize);
float height = mazeSize.height/row;
float width = mazeSize.width/col;
NSLog(@"%d %d",row,col);
NSLog(@"h %f w %f",height,width);
NSLog(@"square size : %f",squareSize);
// Create Current Context To Draw
CGContextRef context = UIGraphicsGetCurrentContext();
// Draw Line
CGContextSetLineWidth(context, 0.5f);
CGContextSetFillColorWithColor(context, [myDrawingView randomColor].CGColor);
CGContextSetStrokeColorWithColor(context, [myDrawingView randomColor].CGColor);
int x ,y, cnt;
x = y = 0;
cnt = 1;
// A loop for number of squares
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
if(cnt<=nSquares)
{
CGRect rect = CGRectMake(x, y, width, height);
// Draws Squares
UIBezierPath *path = [UIBezierPath bezierPathWithRect:rect];
// To draw Oval uncomment
// UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:rect];
[path fill];
[path stroke];
}
x += width;
cnt++;
}
x = 0;
y += height;
}
}
+ (UIColor *) randomColor {
CGFloat red = arc4random()%256;
CGFloat blue = arc4random()%256;
CGFloat green = arc4random()%256;
return [UIColor colorWithRed:abs(red)/255.0f green:abs(green)/255.0f blue:abs(blue)/255.0f alpha:1.0];
}
- (void)drawSquaresWithNumber:(int)numberOfSquares andSize:(CGSize)screenSize
{
nSquares = numberOfSquares;
mazeSize = screenSize;
[self setNeedsDisplay];
}
@end