it-swarm.com.ru

Добавление UIImage View в качестве subView к экземпляру UIView

Я практикую код для начинающих, так как я новичок, и я просто столкнулся с большим количеством путаницы здесь ... это то, что я до сих пор 

UIView *catView = [[UIView alloc] init];
UIImage *image = [UIImage imageNamed:@"lolcat.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[catView.view addSubview:imageView];

Я не понимаю, что и почему здесь что-то не так, кто-то может помочь?

13
Danny Swan
//You need to specify the frame of the view   
UIView *catView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,400)];

UIImage *image = [UIImage imageNamed:@"lolcat.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

//specify the frame of the imageView in the superview , here it will fill the superview
imageView.frame = catView.bounds;

// add the imageview to the superview
[catView addSubview:imageView];

//add the view to the main view

[self.view addSubview:catView];
28
soryngod

Интересная и тонкая заметка. Если представления уже были добавлены в файл .xib, они являются «слабыми», и вам необходимо поменять их местами с временной переменной. Также немного простой математики, чтобы получить координаты, совпадающие с теми, которые вы установили в своем представлении:

@property (weak, nonatomic) IBOutlet UIImageView *imageView1;
@property (weak, nonatomic) IBOutlet UIImageView *imageView2;
CGRect tempFrame; 

tempFrame = self.imageView1.frame;

CGRect tempFrame;   // use bounds instead

tempFrame = self.imageView2.frame;

__strong UIImageView * tempView = self.imageView2;
[self.imageView2 willMoveToSuperview: nil];
[self.imageView2 removeFromSuperview];
[self.imageView2 willMoveToSuperview: self.imageView1];
[self.imageViewSkate addSubview: self.imageViewBall];
self.imageView2.frame = CGRectMake(tempFrame.Origin.x - self.imageView1.frame.Origin.x,
                                      tempFrame.Origin.y - self.imageView1.frame.Origin.y,
                                      tempFrame.size.width, tempFrame.size.height);
tempView = nil;
0
snibbe