poner para pantalla movimiento marca logos logo imagenes gratis fotos fondo desde como celular bloqueo app agua ios nine-patch

ios - marca - fondo de pantalla en movimiento para iphone



¿Cómo usar las imágenes de 9 parches en iOS? (3)

Quiero usar imágenes de 9 parches en mi aplicación IOS. ¿Es posible?


Puede probar esta implementación simple: https://github.com/shiami/SWNinePatchImageFactory

El concepto es fácil y se describe a continuación:

La técnica es solo para transformar las imágenes PNG de 9 parches en objetos UIImage redimensionables compatibles con iOS. Consulte el método resizableImizableWithCapInsets de UIImage: inserciones (UIEdgeInsets) para obtener más información. Por lo tanto, solo permite estirar un segmento de marcadores de parche en ambos lados horizontal y vertical.

+ (UIImage*)createResizableImageFromNinePatchImage:(UIImage*)ninePatchImage { NSArray* rgbaImage = [self getRGBAsFromImage:ninePatchImage atX:0 andY:0 count:ninePatchImage.size.width * ninePatchImage.size.height]; NSArray* topBarRgba = [rgbaImage subarrayWithRange:NSMakeRange(1, ninePatchImage.size.width - 2)]; NSMutableArray* leftBarRgba = [NSMutableArray arrayWithCapacity:0]; int count = [rgbaImage count]; for (int i = 0; i < count; i += ninePatchImage.size.width) { [leftBarRgba addObject:rgbaImage[i]]; } int top = -1, left = -1, bottom = -1, right = -1; count = [topBarRgba count]; for (int i = 0; i <= count - 1; i++) { NSArray* aColor = topBarRgba[i]; if ([aColor[3] floatValue] == 1) { left = i; break; } } NSAssert(left != -1, @"The 9-patch PNG format is not correct."); for (int i = count - 1; i >= 0; i--) { NSArray* aColor = topBarRgba[i]; if ([aColor[3] floatValue] == 1) { right = i; break; } } NSAssert(right != -1, @"The 9-patch PNG format is not correct."); for (int i = left + 1; i <= right - 1; i++) { NSArray* aColor = topBarRgba[i]; if ([aColor[3] floatValue] < 1) { NSAssert(NO, @"The 9-patch PNG format is not support."); } } count = [leftBarRgba count]; for (int i = 0; i <= count - 1; i++) { NSArray* aColor = leftBarRgba[i]; if ([aColor[3] floatValue] == 1) { top = i; break; } } NSAssert(top != -1, @"The 9-patch PNG format is not correct."); for (int i = count - 1; i >= 0; i--) { NSArray* aColor = leftBarRgba[i]; if ([aColor[3] floatValue] == 1) { bottom = i; break; } } NSAssert(bottom != -1, @"The 9-patch PNG format is not correct."); for (int i = top + 1; i <= bottom - 1; i++) { NSArray* aColor = leftBarRgba[i]; if ([aColor[3] floatValue] == 0) { NSAssert(NO, @"The 9-patch PNG format is not support."); } } UIImage* cropImage = [ninePatchImage crop:CGRectMake(1, 1, ninePatchImage.size.width - 2, ninePatchImage.size.height - 2)]; return [cropImage resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right)]; }

SWNinePatchImageView también proporciona el uso de Nib o Storyboard. Puedes consultar el proyecto de ejemplo en el repositorio.