J’ai besoin de tracer une ligne horizontale dans un UIView. Ce qui est la meilleure façon de le faire. Par exemple, je veux tracer une ligne horizontale noire à y-coord = 200.
Je ne suis pas en utilisant Interface Builder.
J’ai besoin de tracer une ligne horizontale dans un UIView. Ce qui est la meilleure façon de le faire. Par exemple, je veux tracer une ligne horizontale noire à y-coord = 200.
Je ne suis pas en utilisant Interface Builder.
Dans votre cas (ligne horizontale), le plus simple est d’ajouter une sous-vue avec couleur de fond noir et cadre `` .
Code échantillon (je l’espère, qu'il n’y a aucune erreur - je l’ai écrit sans Xcode) :
Une autre façon consiste à créer une classe qui va tracer une ligne dans sa méthode drawRect (vous pouvez voir mon exemple de code pour ce ici).
Vous pouvez l'utilisateur UIBezierPath Classe pour ce:
Et pouvez tirer autant de lignes que vous le souhaitez:
J'ai sous-classé UIView :
@interface MyLineDrawingView()
{
NSMutableArray *pathArray;
NSMutableDictionary *dict_path;
CGPoint startPoint, endPoint;
}
@property (nonatomic,retain) UIBezierPath *myPath;
@end
Et initialisé le pathArray et dictPAth objets qui seront utilisés pour le dessin au trait. Je suis en train d'écrire la partie principale du code à partir de mon propre projet:
- (void)drawRect:(CGRect)rect
{
for(NSDictionary *_pathDict in pathArray)
{
[((UIColor *)[_pathDict valueForKey:@"color"]) setStroke]; // this method will choose the color from the receiver color object (in this case this object is :strokeColor)
[[_pathDict valueForKey:@"path"] strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}
[[dict_path objectForKey:@"color"] setStroke]; // this method will choose the color from the receiver color object (in this case this object is :strokeColor)
[[dict_path objectForKey:@"path"] strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}
touchesBegin méthode :
UITouch *touch = [touches anyObject];
startPoint = [touch locationInView:self];
myPath=[[UIBezierPath alloc]init];
myPath.lineWidth = currentSliderValue*2;
dict_path = [[NSMutableDictionary alloc] init];
touchesMoved Méthode:
UITouch *touch = [touches anyObject];
endPoint = [touch locationInView:self];
[myPath removeAllPoints];
[dict_path removeAllObjects];// remove prev object in dict (this dict is used for current drawing, All past drawings are managed by pathArry)
// actual drawing
[myPath moveToPoint:startPoint];
[myPath addLineToPoint:endPoint];
[dict_path setValue:myPath forKey:@"path"];
[dict_path setValue:strokeColor forKey:@"color"];
// NSDictionary *tempDict = [NSDictionary dictionaryWithDictionary:dict_path];
// [pathArray addObject:tempDict];
// [dict_path removeAllObjects];
[self setNeedsDisplay];
touchesEnded Méthode:
NSDictionary *tempDict = [NSDictionary dictionaryWithDictionary:dict_path];
[pathArray addObject:tempDict];
[dict_path removeAllObjects];
[self setNeedsDisplay];
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.