2012年5月27日日曜日

album_art

とりあえずaudioのジャケット画像を非同期で引っ張ってきて真ん中に表示させるためのUIImageViewのサブクラスを作った。あとはこの下にボタン置いてタッチしたらpost_urlをUIWebViewで開く感じで十分なようにも思う。Tumblrの中の人にはaudio_urlについて質問中。サポートチームに投げてなんかわかったら連絡するわーとのこと。

AlbumArt.m
- (id)initWithFrame:(CGRect)frame aaurl:(NSString *)cont
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
  if([cont isEqual:[NSNull null]]){
   self.image=[UIImage imageNamed:@"ina"];
   return self;
  }
  if(!ai) ai=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
  [ai setCenter:self.center];[self addSubview:ai];[ai startAnimating];
  data=[[NSMutableData alloc]initWithCapacity:0];
  NSURLRequest *req=[NSURLRequest 
         requestWithURL:[NSURL URLWithString:cont]
         cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
  conne=[[NSURLConnection alloc]initWithRequest:req delegate:self];
    }
    return self;
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
 if([((NSHTTPURLResponse *)response) statusCode]!=200){
  data=[[NSMutableData alloc]initWithData:UIImagePNGRepresentation([UIImage imageNamed:@"ina"])];
  self.image=[UIImage imageWithData:data];
  [self abort];
 }
 else [data setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)rdata{
 [data appendData:rdata];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
 [self abort];
 NSLog(@"error.");
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
 [ai removeFromSuperview];
 UIImage *aa=[UIImage imageWithData:data];
 UIImageView *aav=[[UIImageView alloc]initWithImage:aa];
 UIImage *border=[UIImage imageNamed:@"gray"];
 UIImageView *borderv=[[UIImageView alloc]initWithImage:border];
 [aav setFrame:CGRectMake(3,3,204,204)];
 [borderv setFrame:CGRectMake(0,0,210,210)];
 [self addSubview:borderv];[self addSubview:aav];
 [self setFrame:CGRectMake((self.frame.size.width-210)/2,(self.frame.size.height-210)/2,210,210)];
}
-(void)abort{
 if(conne!=nil){[conne cancel];conne=nil;}
 if(data!=nil) data=nil;
}

できた。

0 件のコメント:

コメントを投稿