Risposte:
#import <QuartzCore/QuartzCore.h>
....
// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];
self.myView.layer.borderWidth ...
Sto provando a farlo , ma come ho detto, il livello è di sola lettura, quindi il livello non ha metodi o variabili da impostare
Aggiungi quanto segue per gli angoli arrotondati:
self.yourUITextview.layer.cornerRadius = 8;
Ecco il codice che ho usato per aggiungere un bordo attorno al mio TextView
controllo denominato "tbComments":
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
Ed ecco come appare:
Vai tranquillo.
Aggiungo UIImageView
come sottoview di UITextView
. Questo corrisponde al bordo nativo su a UITextField
, incluso il gradiente dall'alto verso il basso:
textView.backgroundColor = [UIColor clearColor];
UIImageView *borderView = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, textView.frame.size.width, textView.frame.size.height)];
borderView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
UIImage *textFieldImage = [[UIImage imageNamed:@"TextField.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 8, 15, 8)];
borderView.image = textFieldImage;
[textField addSubview: borderView];
[textField sendSubviewToBack: borderView];
Queste sono le immagini png che uso e una rappresentazione jpg:
code
resizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
Funziona alla grande, ma il colore dovrebbe essere un CGColor
, non UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Credo che le risposte di cui sopra siano per le versioni precedenti di Swift. Ho cercato un po 'su Google e il codice seguente funziona per Swift 4. Condividilo solo per chiunque possa trarne vantaggio.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8
Buona programmazione!
self.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
per Swift Programming, usa questo
tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor
UIColor(white: 0.2, alpha: 1).CGColor
questo è il più vicino possibile da un UITextField originale
func updateBodyTextViewUI() {
let borderColor = UIColor.init(red: 212/255, green: 212/255, blue: 212/255, alpha: 0.5)
self.bodyTextView.layer.borderColor = borderColor.CGColor
self.bodyTextView.layer.borderWidth = 0.8
self.bodyTextView.layer.cornerRadius = 5
}
è possibile aggiungere un bordo a UITextView da Storyboard - Identity Inspector - Attributo di runtime definito dall'utente
A partire da iOS 8 e Xcode 6, ora trovo che la soluzione migliore sia sottoclassare UITextView e contrassegnare la sottoclasse come IB_DESIGNABLE, che ti consentirà di visualizzare il bordo nello storyboard.
Intestazione:
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface BorderTextView : UITextView
@end
Implementazione:
#import "BorderTextView.h"
@implementation BorderTextView
- (void)drawRect:(CGRect)rect
{
self.layer.borderWidth = 1.0;
self.layer.borderColor = [UIColor blackColor].CGColor;
self.layer.cornerRadius = 5.0f;
}
@end
Quindi trascina semplicemente il tuo UITextView nello storyboard e imposta la sua classe su BorderTextView
La cosa che lo ha fatto funzionare (oltre a seguire le risposte qui) è l'aggiunta del file borderStyle
dell'attributo:
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
Ho risolto questo problema nello storyboard mettendo un completamente disabilitato UIButton
dietro UITextView
e rendendo il colore di sfondo del UITextView
clearColor. Funziona senza richiedere codice o pacchetti aggiuntivi.