如果可能,我想使用故事板設置邊框顏色。我見過的答案在這裏:UITextField border colorUITextField使用故事板設置邊框顏色
我跟着回答故事板:
所有屬性設置,但文本字段不顯示邊框。有什麼建議麼?
如果可能,我想使用故事板設置邊框顏色。我見過的答案在這裏:UITextField border colorUITextField使用故事板設置邊框顏色
我跟着回答故事板:
所有屬性設置,但文本字段不顯示邊框。有什麼建議麼?
我不確定你可以在故事板中更改UITextfield的邊框顏色。你可以通過編程方式改變它;
UITextField *myTextField = (UITextField *)[self.view viewWithTag:1];
myTextField.borderStyle = UITextBorderStyleLine;
myTextField.layer.borderWidth = 2;
myTextField.layer.borderColor = [[UIColor redColor] CGColor];
希望這會有所幫助。
@katit - 是否有任何幫助,或者您是否找到了在故事板中執行此操作的方法? – Gismay 2014-10-09 11:22:26
由於layer.borderColor
屬性,它不顯示任何邊框。它是CGColor類型的,運行時屬性在默認情況下還不支持,所以只設置一個屬性錯誤,也會禁用其他屬性。
要從故事板做,但也涉及一些代碼和子類,你可以使用這個方法:
子類的UITextField並作出
IB_DESIGNABLE
的UIColor屬性,你會再變成CGColor並應用到self.layer.borderColor
。
正如Bogdan指出的那樣,在故事板中找不到layer.borderColor屬性是因爲它是運行時的事情。
但是,你仍然可以設置borderColor不使用IB_DESIGNABLE,在任何視圖(或UIView子類)與一點點的編碼。
下面的步驟是如何實現的,
P.S:記住,類別不能有存儲性能。 'borderUIColor'用作計算屬性,僅作爲實現我們所關注的內容的參考。
請看看下面的代碼示例;
目標C:
接口文件:
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
@interface CALayer (BorderProperties)
// This assigns a CGColor to borderColor.
@property (nonatomic, assign) UIColor* borderUIColor;
@end
實現文件:
#import "CALayer+BorderProperties.h"
@implementation CALayer (BorderProperties)
- (void)setBorderUIColor:(UIColor *)color {
self.borderColor = color.CGColor;
}
- (UIColor *)borderUIColor {
return [UIColor colorWithCGColor:self.borderColor];
}
@end
夫特3.1:
extension CALayer {
var borderUIColor: UIColor {
set {
self.borderColor = newValue.cgColor
}
get {
return UIColor(cgColor: self.borderColor!)
}
}
}
最後去你的故事板/ XIB,按照其餘的步驟;
編輯:您必須設置layer.borderWidth屬性值至少爲1以查看邊框顏色。
構建和運行。 快樂編碼。 :)
對於** Swift 3 **,您只需在** Swift 2 **版本中用'cgColor'替換'CGColor'的所有實例。 – CAD97 2017-05-06 18:39:37
這是一個超過@rameswar的答案,我認爲這是正確的。由於我們應用UIColor
,我認爲這是最好寫的,而不是UITextField
延長(UI
東西放在一起):
extension UITextField {
var borderColor : UIColor? {
get {
if let cgcolor = layer.borderColor {
return UIColor(CGColor: cgcolor)
} else {
return nil
}
}
set {
layer.borderColor = newValue?.CGColor
// width must be at least 1.0
if layer.borderWidth < 1.0 {
layer.borderWidth = 1.0
}
}
}
}
運行時性能會再borderColor
(所以你不需要輸入layer.
我認爲它比borderUIColor
更清潔)。
CALayer
的borderColor
是可選的,所以它是屬性。它設置爲黑色時nil
最後,layer.borderWidth
它被設置爲最低1.0,因爲它沒有設置其他顏色。
那麼Bogdan指出,你可以做到這一點,只需簡單的子類和只是幾個代碼。之後,所有內容都將在Storyboard中進行編輯。
代碼說明(雨燕3.1):
@IBDesignable
class FormTextField: UITextField {
@IBInspectable var borderColor: UIColor? {
didSet {
layer.borderColor = borderColor?.cgColor
}
}
@IBInspectable var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
}
編輯:您將在看到這個屬性檢查器
你可以看到【如何在故事板中添加邊框](http://stackoverflow.com/questions/12301256/is-it-possible-to-set-uiview-border-properties-from-interface-builder/ 30348021#30348021) – iHulk 2015-05-20 11:10:41