1

我有一个项目,我必须在按钮 clcik 上制作一个正方形和圆形。

在 button 之前有 textfileds,在 textfiled 上我们给出诸如 45 之类的值,点击 uibutton 时执行动作,45 square 将自动调整 iphone scfreen 本身。

假设屏幕尺寸为 320 * 480 ,那么正方形会随着屏幕自动调整。

如果我们在 Textfiled 上给出值 300,则 300 个方块将在屏幕上自动创建和调整。

如果我们给出像 1500 这样的值,它将在一个阶段像方格纸一样显示。

我不知道如何去做以及如何开始以及从哪里开始。

我只是想它会使用 Quartcore Framework ,但我不知道从哪里开始我搜索的项目。

我想要专家的建议和想法。非常欢迎专家提出任何想法或建议。

4

2 回答 2

0

创建一个按钮、一个标签和 2 个文本字段(一个用于高度,一个用于宽度)。在标签上设置一个1像素的边框,并将标签的宽度和高度设置为屏幕大小。为按钮创建一个 IBAction,并根据文本字段内的内容分配标签的宽度和高度。这将创建正方形。要创建圆,您可以使用 QuartzCore 并将角半径设置为高度/宽度的一半,或者您可以通过编程方式绘制它。这是实现您所要求的最快的方法,而无需过多地使用 GL 在屏幕上绘图,并且将是了解操作和输入如何工作的良好开端。

于 2013-03-22T12:09:45.123 回答
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
于 2013-03-22T12:32:39.497 回答