63 votes

Arrière-plan en mosaïque de l'Image: puis-je le faire facilement avec UIImageView?

J'ai un plein écran de l'image de fond qui est carrelé, c'est-à-reproduit quelques fois horizontalement et verticalement, de façon à en faire un gros. Comme dans les navigateurs laid sur les pages d'accueil ;)

Est UIImageView mon ami?

105voto

Bill Dudney Points 2953

Si je comprends votre question correctement, vous pouvez utiliser colorWithPatternImage: sur UIColor puis de définir la couleur d'arrière-plan sur un UIView.

Si vous devez utiliser un UIImageView vous pouvez faire la même chose mais quelle que soit l'image que vous placez dans l'affichage de l'image va attirer en face de la mosaïque de l'image.

30voto

Kyle Points 271

Pour obtenir de l'alpha de travailler avec le modèle de l'image, assurez-vous d'avoir le jeu suivant:

view.backgroundColor = [UIColor colorWithPatternImage:aImage];
[view setOpaque:NO];
[[view layer] setOpaque:NO];

17voto

Adam Points 17726

Pendant des années j'ai utilisé le projet de Loi Dudney de l'approche, mais iOS 6 a une bien meilleure solution. Et ... aujourd'hui j'ai trouvé un moyen de faire ce travail sur les anciennes versions d'iOS.

  1. créer la nouvelle classe "UIImage+Carreler" (copier/coller de la source ci-dessous)
  2. importer ce quelle que soit la catégorie où vous voulez une UIImageView avec carreler image. C'est une catégorie, de sorte qu'il "mises à jour" tous vos UIImage à carreler, en utilisant la norme Apple appelle
  3. quand vous voulez une "mosaïque" de la version d'une image à l'appel: "image = [image imageResizingModeTile]"

UIImage+Carreler.h

#import <UIKit/UIKit.h>

@interface UIImage (Tileable)

-(UIImage*) imageResizingModeTile;

@end

UIImage+Carreler.m

#import "UIImage+Tileable.h"

@implementation UIImage (Tileable)

-(UIImage*) imageResizingModeTile
{
    float iOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];

    if( iOSVersion >= 6.0f )
    {
        return [self resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeTile];
    }
    else
    {
        return [self resizableImageWithCapInsets:UIEdgeInsetsZero];
    }
}
@end

4voto

Rivera Points 4219

Comme je l'ai vraiment Interface Builder, j'ai créé ce UIImageView sous-classe d'appliquer mosaïque de milieux:

@interface PETiledImageView : UIImageView

@end

@implementation PETiledImageView

- (void)awakeFromNib
{
    [super awakeFromNib];

    UIImage * imageToTile = self.image;
    self.image = nil;
    UIColor * tiledColor = [UIColor colorWithPatternImage:imageToTile];
    self.backgroundColor = tiledColor;
}

@end

J'ai essayé primordial setImage: mais il semble IB ne pas l'appeler lors du décodage d'un fichier Nib.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X