Как растянуть (масштабировать) изображение на UIView? - PullRequest
3 голосов
/ 14 ноября 2011

Как я могу взять изображение и растянуть его, чтобы заполнить экран на моем UIView (320/460)

Я загружаю и размещаю его, однако, как вы можете видеть, требуется некоторое масштабирование.

enter image description here

Спасибо!

CGRect gameArea = CGRectMake(0, 0, 320, 460);

UIImage *backgroundImage = [UIImage imageNamed:@"green_background.jpg"]; 
UIImageView *myImageView = [[UIImageView alloc] initWithImage:backgroundImage];
[myImageView setContentMode:UIViewContentModeScaleToFill];

UIView *topView = [[UIView alloc] initWithFrame:gameArea];

[topView addSubview:myImageView];    

[[self view] addSubview:topView];

Ответы [ 4 ]

4 голосов
/ 31 мая 2012

Как я уже сказал в своих комментариях к посту Шамсиддина, для UIImageView необходим размер, чтобы знать, куда растянуть. Здесь я использую тот же размер UIView. Я добавил еще один ответ, потому что код в UIView отсутствует. Итак, вот полный код.

// Area of the UIView and UIImageView
CGRect gameArea = CGRectMake(0, 0, 320, 460);

// Create UIImageView with Image
UIImage *backgroundImage = [UIImage imageNamed:@"green_background.jpg"]; 
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:gameArea];
[myImageView setImage:[backgroundImage stretchableImageWithLeftCapWidth:3 topCapHeight:3]]; 
[myImageView setUserInteractionEnabled:YES];

// Create UIView and insert subview
UIView *topView = [[UIView alloc] initWithFrame:gameArea];
[topView addSubview:myImageView];    
[[self view] addSubview:topView];
2 голосов
/ 02 апреля 2012
CGRect gameArea = CGRectMake(0, 0, 320, 460);

UIImage *backgroundImage = [UIImage imageNamed:@"green_background.jpg"]; 
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:gameArea];
[myImageView setImage:[backgroundImage stretchableImageWithLeftCapWidth:3 topCapHeight:3]]; 
[myImageView setUserInteractionEnabled:YES];
[self.view addSubview:myImageView];
0 голосов
/ 25 октября 2012

Я только что сделал это в своем собственном приложении для iOS5, мне нужно было динамически установить фоновое изображение и масштабировать его. Представьте, что вы делаете это в - (void)viewWillAppear:(BOOL) animated

UIImageView *imageview = [[UIImageView alloc] initWithFrame:self.view.frame];
[imageview setContentMode:UIViewContentModeScaleAspectFill];
[imageview setImage:[UIImage imageNamed:@"Background.png"]];
[self.view addSubview:imageview];
[self.view sendSubviewToBack:imageview];

Итак, мы создаем представление, устанавливаем его режим масштабирования, добавляем изображение bg, устанавливаем его как подпредставление в главном представлении, а затем перемещаем его назад, чтобы оно не занимало другие подпредставления.

Пожалуйста, примите этот ответ.

0 голосов
/ 14 ноября 2011

попробуй

UIView *view;
view.ContentMode = UIViewContentModeScaleToFill;
...