2011-01-16 9 views
0

Je veux voir une image en plein écran sur l'iPhone. combien de pixels dois-je définir? largeur et hauteur sont différentes pour l'iphone 3 et 4?UIImageView: image en plein écran

Mon code source:

NSString *filePath = [[NSBundle mainBundle] pathForResource:theProduct.image ofType:@"png"]; 
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:filePath]]; 
img.frame = CGRectMake(0.0, 0.0, ?, ?); 
[self.view addSubview:img]; 

Que dois-je mettre à la place des points d'interrogation?

Un grand merci, Stefano

Répondre

1

Vous devez régler la taille des anciens iPhones: 320 x 480 pixels. L'iPhone 4 double alors cela pour s'adapter à l'écran. Si vous ne voulez pas voir la pixellisation, vous aurez besoin d'une autre image @ 2x 640 x 960.

8

Essayez de régler le cadre du UIImageView à [[UIScreen mainScreen] applicationFrame].

Cela permettra à UIImageView d'utiliser tout l'espace disponible pour l'application, à l'exclusion de la barre d'état si elle est visible.

+0

Cela m'a semblé être une bonne idée, mais je me suis trompé d'orientation quand je l'ai essayé. http://stackoverflow.com/questions/2664980/uiscreen-applicationframe-returning-incorrect-rectangle-on-landscape-application pourrait intéresser les futurs lecteurs. – PeterT

0

La question est déjà répondue (utilisez 320 x 480 ou 320 x 460 après suppression de la barre d'état).

Pour résoudre des problèmes similaires, cependant: Dans Xcode, supprimez un UIImageView dans un xib; taillez-le de manière appropriée, puis dans le volet de droite Afficher le "Inspecteur de taille" (deuxième onglet à partir de la droite). Il donne la largeur et la hauteur du rectangle du cadre. Utilisez cette largeur et hauteur comme taille pour une image si vous ne voulez pas qu'elle soit mise à l'échelle (ou plutôt si vous voulez une échelle 1: 1). Aussi (comme ci-dessus) utiliser des images à double résolution @ 2x pour les écrans rétine.

0

Il s'agit d'un thread assez ancien, il suffit donc de mettre à jour comment cela se fait avec les contraintes.

imageView?.translatesAutoresizingMaskIntoConstraints = false 
imageView?.contentMode = .scaleAspectFit 
view.backgroundColor=UIColor.blue 
view.addSubview(self.imageView!) 

    let height = NSLayoutConstraint(item: imageView!, attribute: .height, relatedBy: .equal, toItem: view, attribute: .height, multiplier: 1, constant: 0) 
    let width = NSLayoutConstraint(item: imageView!, attribute: .width, relatedBy: .equal, toItem: view, attribute: .width, multiplier: 1, constant: 0) 
    view.addConstraints([height, width])