Domanda

Sto usando tre20 TTLauncherView E mi chiedeva se qualcuno ha avuto esperienza nel caricare immagini ad alta risoluzione?

http://three20.info/showcase/launcher

Sto usando il seguente metodo per impostare il mio TTLauncherItem'S:

NSString *imageUrl = [self displayImageUrl:@"http://foo.com/lowres.png" withHighResUrl:@"http://foo.com/hires.png";
TTLauncherItem *launcherItem = [[[TTLauncherItem alloc] initWithTitle:@"Icon1"
                                                                image:imageUrl
                                                                  URL:@"Icon1"
                                                            canDelete:NO] autorelease];

Questo è il metodo che uso per determinare se si tratta di un iOS4.

- (NSString *)displayImageUrl:(NSString *)standardResUrl withHighResUrl:(NSString *)highResUrl {
    NSString *imageUrl = nil;
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2) {
        imageUrl = highResUrl;
    } else {
        imageUrl = standardResUrl;
    }

    return imageUrl;
}

Il problema è che le immagini vengono effettivamente visualizzate nelle loro dimensioni complete su un iPhone 4, mentre qualsiasi dispositivo iOS sotto un iPhone 4 viene visualizzato correttamente. Mi chiedo solo se avrei bisogno di apportare modifiche al TTLauncherView biblioteca o se esiste un modo più semplice per risolvere tale problema.

È stato utile?

Soluzione

L'ho realizzato aggiungendo un nuovo stile al mio foglio di stile tre20 basato su LauncherButtonImage. Questo è l'originale ...

     - (TTStyle*)launcherButtonImage:(UIControlState)state {
      TTStyle* style =
        [TTBoxStyle styleWithMargin:UIEdgeInsetsMake(-7, 0, 11, 0) next:
        [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:8] next:
        [TTImageStyle styleWithImageURL:nil defaultImage:nil contentMode:UIViewContentModeCenter
                      size:CGSizeZero next:nil]]];

      if (state == UIControlStateHighlighted || state == UIControlStateSelected) {
          [style addStyle:
            [TTBlendStyle styleWithBlend:kCGBlendModeSourceAtop next:
            [TTSolidFillStyle styleWithColor:RGBACOLOR(0,0,0,0.5) next:nil]]];
      }

  return style;
}

... e questa è la versione aggiornata ...

- (TTStyle*)favoriteLauncherButtonImage:(UIControlState)state {

    TTStyle* style =
    [TTShapeStyle styleWithShape:[TTRoundedRectangleShape
                                  shapeWithRadius:4.0] next:
     [TTBoxStyle styleWithMargin:UIEdgeInsetsMake(0, 0, 0, 0)
                         padding:UIEdgeInsetsMake(16, 16, 16, 16)
                         minSize:CGSizeMake(0, 0)
                        position:TTPositionStatic next:
      [TTImageStyle styleWithImageURL:nil defaultImage:nil contentMode:UIViewContentModeScaleAspectFit
                                 size:CGSizeMake(64, 64) next: nil
       ]]];

    if (state == UIControlStateHighlighted || state == UIControlStateSelected) {
        [style addStyle:
         [TTBlendStyle styleWithBlend:kCGBlendModeSourceAtop next:
          [TTSolidFillStyle styleWithColor:RGBACOLOR(0,0,0,0.5) next:nil]]];
    }

    return style;
}

Probabilmente ci sono cose lì dentro di cui non hai bisogno come angoli di immagini arrotondati. La parte operativa è la direttiva Ttimagestyle che blocca la dimensione dell'immagine a 64x64. Spero che sia di aiuto.

Altri suggerimenti

Sto usando il TTLAUNCHERVIEW di tre20

Invece, prova a usare sdwebimage:

https://github.com/rs/sdwebimage

Potresti semplicemente emettere due carichi su un uiimageview, uno per il massimo e uno per l'immagine a bassa risoluzione. I bassi dovrebbero finire per primi ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top