2011-09-07 120 views
1

你好,我有一个形象,像这样 enter image description herestretchableImageWithLeftCapWidth使图像模糊

而且我认为它可能延伸就好了。它的17px宽和30px高。

我只是想能够水平拉伸它。但是当我伸展它时,这就是我最终的结果。 enter image description here

有了,伸出它... enter image description here

也许我是挑剔,这些角落,但它只是看起来像它应该工作一点不比它。

任何帮助将会很棒!

int textWidth = [text length] * 10; 

    CGRect rect = CGRectMake(32.50f, 14.5f, 40.0f, 30.0f); 

    UIImage* img = [[UIImage imageNamed:@"screen_displayer_rounded.png"] stretchableImageWithLeftCapWidth:8 topCapHeight:0]; 
    UIImageView* imgView = [[UIImageView alloc] initWithFrame:rect]; 

    [imgView setImage:img];  

    //[imgView addSubview:label]; 
    NSLog(@"imge %@", imgView.subviews); 

    [self addSubview:imgView]; 

回答

3

你应该保持至少5个像素水平和垂直6。因此,使用5x6作为您的大写字母,而不是4x0(btw,0表示拉伸整个图像)。这样,iOS会使用第六和第七像素(以下红色标记)来展开图像。

corner

+0

对不起,发布了错误的代码,它通常是8,这将使正确的8,这使得16,所以1 px遗留伸展,仍然不工作。与上面相同的东西 –

+0

你可以尝试添加rect = CGRectIntegral(rect); ?定位在一个像素的一小部分有时会导致模糊的图形。并用8x6替换8x0帽。 – Jano

+0

已发布它!!!!!!!!!!!!!!!!!!!!!你能解释一下吗? –

0

看着在Photoshop图像,它看起来像你的水平和垂直圆角分别为5像素和6个像素。所以,下面一行应该如下:

UIImage* img = [[UIImage imageNamed:@"screen_displayer_rounded.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:6]; 
+0

仔细看看顶部的例子,它没有以任何方式拉伸,角落只是模糊,即使我将宽度设置为10000,角落保持完全相同,只是模糊不清... –

+0

嘿,再次,詹姆斯,在你的更新的问题,topCapHeight仍然为0.只是为了验证,你是否试图将其设置为6? – Madhu