2014-04-21 20 views
0

我有麻煩,定製的UISegmentedControl:我的子類是我設置這兩個選擇狀態和非選擇狀態這樣的背景:的UIImage的resizableImageWithCapInsets放置一個陰影圖像

#define kEdgeInsets UIEdgeInsetsMake(18, 18, 18, 18) 

    UIImage *grayImage = [[UIImage v_imageNamed:@"gray_rect"] resizableImageWithCapInsets:kEdgeInsets]; 
    [self setBackgroundImage:grayImage 
        forState:UIControlStateNormal 
        barMetrics:UIBarMetricsDefault]; 

    UIImage *greenImage = [[UIImage v_imageNamed:@"green_rect"] resizableImageWithCapInsets:kEdgeInsets]; 
    [self setBackgroundImage:greenImage 
        forState:UIControlStateSelected 
        barMetrics:UIBarMetricsDefault]; 

    [self setTintColor:[UIColor colorWithRed:0.506 green:0.514 blue:0.525 alpha:1.000]]; 

在哪裏這是我正在使用的PNG gray_rectgreen_rect

現在,當我執行此代碼時,我在分段控件上得到了一個奇怪的陰影,這不是我們想要的。這是什麼輸出看起來像output

這是非常奇怪的,因爲沒有陰影的原始圖像,也沒有UISegmentedControl加一個(據我所知)。

進一步的檢查,我注意到,如果我刪除了resizableImageWithCapInsets:調用,圖像看起來失真(如人們所期望的),但沒有陰影。

otheroutput

任何想法?因爲我真的會爲此感到生氣,因爲我沒有這個問題時使用resizableImageWithCapInsets:UIButton

非常感謝!

回答

0

我想通了。

原來分段控制器的幀高爲44pts,背景圖像爲75ptsx75pts。由於我已將圖像的頂部和底部插入圖像設置爲18pts,因此操作系統會將圖像的頂部和底部18pts調整大小,忽略其餘部分。這裏有趣的部分,因爲圖像有一個漸變,圖像的其餘部分被忽略,它的控制着色。

爲了使用與垂直梯度圖像,您必須使用完全一樣的高度的控制PNG使用基(http://useyourloaf.com/blog/2012/07/05/customizing-appearance-with-resizable-images.html

這是我做什麼,調整圖像到44x44pts,改變插圖來UIEdgeInsetsMake(0, 10, 0, 10)表示圖像不能垂直調整大小