2016-04-05 13 views
1

Ich bin neu in iOS. Ich mache eine Chat-Anwendung. Ich benutze UITableView für die Anzeige der Nachricht Chat (eine Zelle - eine Nachricht).
In jeder Zelle wird die Nachricht I in 2,3 oder 4 Ecke (wie Face Chat)Allrounder von UIBezierPath Problem beim Scrollen

Für rundere runder I die UIBezierPath innen layoutSubView jedes Tableview Cell

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.messageView.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerBottomLeft) cornerRadii:CGSizeMake(3.0, 3.0)]; 

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
maskLayer.frame = self.bounds; 
maskLayer.path = maskPath.CGPath; 
self.messageView.layer.mask = maskLayer; 

enter image description here

verwenden Das Problem ist, wenn Layout zuerst initial, alles funktioniert gut, aber wenn ich einige Zellen scrollen haben falsche Rundung (ich finde das Problem ist manchmal, wenn scroll self.messageView.bounds r falscher Wert UIBezierPath falsche Ecke) aber ich weiß nicht, warum

Wie kann ich verhindern, dass es passiert ist? Oder Kann ich eine anderen Weg Blick auf runde ohne UIBezierPath (I google finde ich aber nur eine Möglichkeit, die UIView runden verwendet UIBezierPath :()?
Jede Hilfe

geschätzt würde
+0

diesen Code versuchen [v.layer setCornerRadius: 30.0f];. // Grenze [v.layer setBorderColor: [UIColor lightGrayColor ] .CGColor]; [v.layer setBorderWidth: 1.5f]; // Schlagschatten [v.Layer setShadowColor: [UIColor blackColor] .CGColor]; [v.Layer setShadowOpacity: 0.8]; [v.Layer setShadowRadius: 3.0]; [v.Layer setShadowOffset: CGSizeMake (2.0, 2.0)]; – iOS

+0

@DarjiJigar meine Anforderung ist "runder die Nachricht in 2,3 oder 4 Ecke", machen Sie Ihren Code nur Allrounder in 4 Ecken –

+0

überprüfen Sie dies http://stackoverflow.com/questions/4847163/round-two-corners-in -uiview, ABER ich schätze (und du sagst es), dass das Problem nicht beim Zeichnen, sondern bei der richtigen Begrenzung liegt, also würde ich mich auf fixit konzentrieren, aber nicht den Bézier-Pfad zu umgehen – Injectios

Antwort

1

Ich hatte ein ähnliches Problem und fest es durch meine Ecke Abrunden Code in tableView:willDisplayCell:forRowAtIndexPath bewegen Dies ermöglicht Cocoa Größe Dinge richtig

+0

Dies ist Antwort sparen meine Zeit! Danke, Mann! – Genevios