Mam serię obrazów, które są wyśrodkowane na przezroczystym tle. Chciałbym dodać do nich białą ramkę i mógłbym ją narysować, gdybym miał ścieżkę granicy nieprzezroczystej części obrazu. Czy można to wydobyć?UIBezierPath wokół UIImage z przezroczystością
5
A
Odpowiedz
-2
Można to zrobić na kilka sposobów. Zrób to wszystko w metodzie init
metody niestandardowego podglądu podrzędnego. Najpierw ustaw kolor ramki. Oto sposób można go ustawić:
borderColor = [UIColor greenColor];
i
borderColor=[[UIColor alloc]initWithPatternImage:[UIImage imageNamed:@"anyImageName.jpg"]]; //[UIColor colorWithPatternImage:];
Następny przeznaczyć UIBezierPath jak
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:_yourImageView.frame cornerRadius:1.0];
[path setLineWidth:5.0];//set width as per your requirement.
i ostatni, nadpisać metodę drawRect
jak
- (void)drawRect:(CGRect)rect
{
[borderColor setStroke];
[path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];//alpha handles the transparency
}
Powinno działać. Szczęśliwe kodowanie!
Możesz osiągnąć to samo, dodając cień do warstwy. [Spróbuj tego] (http://stackoverflow.com/a/5428108/2487322) – Idles
Czy obrazy znajdują się w 'UIImageView's? Jeśli tak, znacznie prostszym sposobem dodawania obramowań jest używanie warstw. Np. 'MyImageView.layer.borderColor = [UIColor whiteColor] .CGColor' oraz' myImageView.layer.borderWidth = 2.f' Będziesz musiał dodać strukturę QuartzCore do swojego celu, oraz '#import 'w plikach .m przy użyciu warstw. –
bobnoble
Nie chcę kwadratowego cienia ani obramowania, chcę, aby był taki sam, jak ten obraz. – lavoy