標籤:
在之前開發的過程中,遇到過這樣一個小問題:給button設定一張圖片,圖片是灰色,美工做的圖肯定沒有問題 ,給button設定圖片的方法也很簡單,一句代碼搞定,但是啟動並執行時候卻發現,圖片無緣無故變成了藍色。後來自己研究了一下發現,在給一些控制項設定圖片的時候會預設把圖片渲染成藍色,找到問題所在,就好結局了,解決方案如下:
| 123456 |
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
這個方法就是用來設定圖片的渲染模式的
| 1 |
UIImageRenderingModeAlwaysOriginal這個枚舉值是聲明這張圖片要按照原來的樣子顯示,不需要渲染成其他顏色 |
OK! 問題結局了。把這個小問題記錄在這裡 防止下次遇到又忘記怎麼解決!
順便添一句,如果你的美工沒有給你button的尺寸,只是給了你button的圖片,那麼你可以直接取到圖片的尺寸,然後把button設定為和圖片同樣大小的尺寸
| 12345678 |
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]; |
圖片渲染成藍色的問題