gpt4 book ai didi

ios - 如何以编程方式添加 subview

转载 作者:行者123 更新时间:2023-11-29 10:33:48 24 4
gpt4 key购买 nike

首先,我是 IOS 编程的新手。我正在做一个项目,遇到了一个问题。

我想以编程方式在我的“表格” View 上添加一个“球” subview ,但是,球不会显示。该程序仅显示表格。什么原因?提前致谢,这是我的文件:

表.m

//
// Table.m
// Lines
//
// Created by Eduard Avetisyan on 1/24/15.
// Copyright (c) 2015 Eduard Avetisyan. All rights reserved.
//

#import "Table.h"
#import "Constants.h"

@implementation Table


-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self)
{
[self addBall];
}
return self;
}

- (void)addBall
{
Ball* myBall = [[Ball alloc]init];
[self.window addSubview:myBall];
myBall.center = self.window.center;
[self.window bringSubviewToFront:myBall];
}
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
CGContextSetLineWidth(context, 2.0f);

for (int i = 0;i <= TABLE_LENGTH; i++)
{

//draw rows
CGContextMoveToPoint(context, BORDER_DISTANCE +i * CELL_LENGTH, BORDER_DISTANCE);
CGContextAddLineToPoint(context, BORDER_DISTANCE + i * CELL_LENGTH, BORDER_DISTANCE + CELL_LENGTH * TABLE_LENGTH);
CGContextStrokePath(context);

//draw columns
CGContextMoveToPoint(context, BORDER_DISTANCE, BORDER_DISTANCE + i * CELL_LENGTH);
CGContextAddLineToPoint(context, BORDER_DISTANCE + CELL_LENGTH * TABLE_LENGTH, BORDER_DISTANCE + i * CELL_LENGTH);
CGContextStrokePath(context);
}

}

@end

球.m

//
// Ball.m
// Lines
//
// Created by Eduard Avetisyan on 1/24/15.
// Copyright (c) 2015 Eduard Avetisyan. All rights reserved.
//

#import "Ball.h"

@implementation Ball

-(instancetype)init
{
self = [super init];

if (self) {

CGRect newFrame = self.frame;

newFrame.size.width = 50;
newFrame.size.height = 50;
[self setFrame:newFrame];

Colors color = arc4random_uniform(NUMBER_OF_COLORS);
[self drawBall:color];
}

return self;
}


-(void)drawBall:(Colors)color
{
switch (color) {
case red:
self.fillColor = [UIColor redColor].CGColor;
break;
case green:
self.fillColor = [UIColor greenColor].CGColor;
break;
case yellow:
self.fillColor = [UIColor orangeColor].CGColor;
break;
case blue:
self.fillColor = [UIColor blueColor].CGColor;
break;

default:
break;
}

}

-(void)setFillColor:(CGColorRef)fillColor
{
_fillColor = fillColor;

[self setNeedsDisplay];
}


- (void)drawRect:(CGRect)rect {

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, self.fillColor);
CGContextSetStrokeColorWithColor(context, [UIColor greenColor].CGColor);

CGContextFillEllipseInRect(context, rect);
CGContextStrokeEllipseInRect(context, rect);

}

@end

常量.h

//
// Constants.h
// Lines
//
// Created by Eduard Avetisyan on 1/24/15.
// Copyright (c) 2015 Eduard Avetisyan. All rights reserved.
//

#ifndef Lines_Constants_h
#define Lines_Constants_h

#define TABLE_LENGTH 10
#define CELL_LENGTH 30
#define BORDER_DISTANCE 5
#define NUMBER_OF_COLORS 4

typedef enum {
red,
green,
yellow,
blue,
black,
orange,
violet
}Colors;


#endif

最佳答案

在您的 addBall 方法中,您将新的 Ball 对象添加到 self.window。您应该将其添加到 self 中。而且您不需要调用 bringSubviewToFront:

关于ios - 如何以编程方式添加 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28125563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com