I am trying to access the MyCustomView
from another class using the following code in ViewController.swift ..
var view = MyCustomView(frame: CGRectZero)
.. in the viewDidLoad
method. The problem is the view does not get initialized in the simulator.
I have already set class in storyboard for the current ViewController.
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) }
The CGRectZero
constant is equal to a rectangle at position (0,0)
with zero width and height. This is fine to use, and actually preferred, if you use AutoLayout, since AutoLayout will then properly place the view.
But, I expect you do not use AutoLayout. So the most simple solution is to specify the size of the custom view by providing a frame explicitly:
customView = MyCustomView(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) self.view.addSubview(customView)
Note that you also need to use addSubview
otherwise your view is not added to the view hierarchy.
Swift 3 / Swift 4 Update:
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With