iOS-画像を青にレンダリングするための修正方法

1475 ワード

以前の開発の過程で、buttonに1枚の画像を設定して、画像は灰色で、美工が作った図は間違いなく問題がなくて、buttonに画像を設定する方法も簡単で、1つのコードは完成して、しかし運行する時発見して、画像は理由もなく青になりました.後で自分で研究して発見して、いくつかのコントロールにピクチャーを設定する時デフォルトでピクチャーを青色にレンダリングして、問題の所在を見つけて、良い結末、解決方法は以下の通りです:
    UIButton *loginBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 50)];
    loginBtn.showsTouchWhenHighlighted = YES;
    UIImage *loginImg = [UIImage imageNamed:@"login"];
    loginImg = [loginImg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    [loginBtn setImage:loginImg forState:UIControlStateNormal];
    [self.view addSubview:loginBtn];

-(UIImage*)imageWithRenderingMode:(UIImageRenderingMode)renderingModeこの方法は、画像のレンダリングモードを設定するためのものです.
UIImageRenderingModeAlwaysOriginal , 
OK! 問題は結末をつけた.この小さな問題をここに記録して、今度出会ってまたどのように解決するかを忘れないようにします!
ちなみに、もしあなたの美工がbuttonのサイズをあげていないならば、ただbuttonの画像をあげただけで、あなたは直接画像のサイズを取って、それからbuttonを画像と同じ大きさのサイズに設定することができます
    UIButton *loginBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    loginBtn.showsTouchWhenHighlighted = YES;
    UIImage *loginImg = [UIImage imageNamed:@"login"];
    loginImg = [loginImg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
     [loginBtn setImage:loginImg forState:UIControlStateNormal];
    CGSize size = loginBtn.currentImage.size;// button image 
    loginBtn.frame = CGRectMake(100, 100, size.width, size.height);
    [self.view addSubview:loginBtn];