ios - tipos - vistas de excel 2013
Cómo crear una vista personalizada mediante programación en un campo de texto con controles rápidos, botón, etc. (5)
Estoy intentando acceder a MyCustomView
desde otra clase usando el siguiente código en ViewController.swift ..
var view = MyCustomView(frame: CGRectZero)
.. en el método viewDidLoad
. El problema es que la vista no se inicializa en el simulador.
Ya he establecido una clase en el guión gráfico para el ViewController actual.
class MyCustomView: UIView {
var label: UILabel = UILabel()
var myNames = ["dipen","laxu","anis","aakash","santosh","raaa","ggdds","house"]
override init(){
super.init()
}
override init(frame: CGRect) {
super.init(frame: frame)
self.addCustomView()
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func addCustomView() {
label.frame = CGRectMake(50, 10, 200, 100)
label.backgroundColor=UIColor.whiteColor()
label.textAlignment = NSTextAlignment.Center
label.text = "test label"
label.hidden=true
self.addSubview(label)
var btn: UIButton = UIButton()
btn.frame=CGRectMake(50, 120, 200, 100)
btn.backgroundColor=UIColor.redColor()
btn.setTitle("button", forState: UIControlState.Normal)
btn.addTarget(self, action: "changeLabel", forControlEvents: UIControlEvents.TouchUpInside)
self.addSubview(btn)
var txtField : UITextField = UITextField()
txtField.frame = CGRectMake(50, 250, 100,50)
txtField.backgroundColor = UIColor.grayColor()
self.addSubview(txtField)
}
La constante CGRectZero
es igual a un rectángulo en la posición (0,0)
con ancho y alto cero. Esto está bien para usar, y realmente preferido, si usa AutoLayout, ya que AutoLayout colocará la vista correctamente.
Pero, espero que no uses AutoLayout. Por lo tanto, la solución más simple es especificar el tamaño de la vista personalizada proporcionando un marco explícitamente:
customView = MyCustomView(frame: CGRect(x: 0, y: 0, width: 200, height: 50))
self.view.addSubview(customView)
Tenga en cuenta que también necesita usar addSubview
contrario, su vista no se agregará a la jerarquía de vistas.
Swift 3 / Swift 4 Actualización:
let screenSize: CGRect = UIScreen.main.bounds
let myView = UIView(frame: CGRect(x: 0, y: 0, width: screenSize.width - 10, height: 10))
self.view.addSubview(myView)
let viewDemo = UIView()
viewDemo.frame = CGRect(x: 50, y: 50, width: 50, height: 50)
self.view.addSubview(viewDemo)
var customView = UIView()
@IBAction func drawView(_ sender: AnyObject) {
customView.frame = CGRect.init(x: 0, y: 0, width: 100, height: 200)
customView.backgroundColor = UIColor.black //give color to the view
customView.center = self.view.center
self.view.addSubview(customView)
}
view = MyCustomView(frame: CGRectZero)
En esta línea, está intentando establecer rect vacío para su vista personalizada. Es por eso que no puedes ver tu vista en el simulador.