Как добавить UIImageView в UIView (не UIViewController)? - PullRequest
0 голосов
/ 20 сентября 2011

Я создал приложение на основе представления.У меня есть sampleGameViewContrioller.xib, который содержит основной вид и дочерний вид, связанный с классом Behavior.

SampleViewController.xib:

  • Вид
    • Вид<- Поведение </li>

В sampleViewContoller.m я создаю экземпляр класса Behavior:

Behavior *b = [[Behavior alloc] initilizeWithType:@"type" position:rect mapArray:arrMap];

Behavior.m:

 -(id) initilizeWithType:(NSString *)type position:(CGRect) pos mapArray:(NSMutableArray *) mapArr {

 self = [super initWithFrame:CGRectMake(0, 0, 1024, 570)];
 if (self != nil) {
 if ([type isEqualToString:@"type"]) {
 arrMap = mapArr;
 self.rectForDraw = pos;
 self.file = [[NSString alloc]initWithString:@"girl.png"];
 UIImageView *imgg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"girl.png"]];
 imgg.frame = rect;
 [self addSubview:imgg];
 timer = [NSTimer scheduledTimerWithTimeInterval:0.015 target:self selector:@selector(moving:) userInfo:nil repeats:YES];
 }
 }
 return self;} 

Но это не работает.Изображение не добавляется в мой вид.

, если я добавляю imageView в - (void) drawRect: (CGRect) прямоугольник, он работает:

- (void)drawRect:(CGRect)rect {
 self.img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"girl.png"]];
 self.img.frame = CGRectMake(100, 100, 100, 100);
 [self addSubview:self.img]; }

Но я должен отправить параметры рисованияв классе Поведение через конструктор.Как добавить imageView без метода drawRect, с моим конструктором?

извините за мой английский:)

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

Если вы хотите добавить представление изображения поверх простого UIView, просто сделайте [self.view addSubview:imageview]; Если вы получаете это изображение из метода класса Behavior, верните UIImageView из этого метода и добавьте его в представление. Попробуйте это:

Behavior *b = [[Behavior alloc] init];

Затем напишите один метод в классе поведения

-(UIImageView*) initilizeWithType:(NSString *)type position:(CGRect) pos mapArray:(NSMutableArray *) mapArr {
// Your Logic

return  imgView;  //UIImageView object
} 

Затем вызовите этот метод в вашем viewcontroller как

UIImageView *imgView=[b initilizeWithType:@"YOUR STRING" position:YOUR RECT pos mapArray:YOUR ARRAY ];
0 голосов
/ 20 сентября 2011
imgg.frame = rect;

Эта строка назначает ваш кадр imageView ... ничему, насколько я могу видеть.Должно ли это быть pos или rectForDraw?При добавлении к вашему представлению в drawRect вы явно устанавливаете реальный фрейм, так что, вероятно, в этом и заключается разница.

...