Se si desidera solo la forma senza contenuto, è possibile creare uno CAShapeLayer
e aggiungerlo al livello della vista. (In effetti puoi anche inserire contenuti in questo metodo, ma dovrai modificarlo un po ').
CAShapeLayer *layer = [CAShapeLayer layer];
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0, 100)]; // bottom left corner
[path addLineToPoint:CGPointMake(100, 0)]; // top middle
[path addLineToPoint:CGPointMake(300, 0)]; // top right corner
[path addLineToPoint:CGPointMake(300, 100)]; // bottom right corner
[path closePath];
layer.path = path.CGPath;
layer.fillColor = [UIColor blackColor].CGColor;
layer.strokeColor = nil;
[theView.layer addSubLayer:layer];
Questo non richiede l'utilizzo di drawRect
o altro. Dovrai cambiare le coordinate in base ai valori che desideri.
È inoltre possibile utilizzare una sottoclasse UIView
e sostituire drawRect
. Richiede più lavoro ma lo UIBezierPath
sarà praticamente lo stesso.
CALayer
è molto potente e utilizzato molto da Apple. Ad esempio la tela di modifica in Pages è scritta quasi esclusivamente usando CALayer
s.
Questo potrebbe essere interpretato in molti modi. Hai una foto di ciò che vuoi. Questo potrebbe essere un triangolo rettangolo, o un rombo, ecc. Tutto programmaticamente possibile senza usare le trasformazioni ma avremo bisogno di un'immagine (o una spiegazione migliore) per poter rispondere. – Fogmeister
L'uso di una trasformazione distorce il contenuto della vista e probabilmente non è quello che desideri. –
Grazie per la tua risposta @Fogmeister, ho aggiunto un'immagine – Odin