在Swift中以编程方式制作UIButton
我正尝试以编程方式构buildUI。 我如何得到这个动作? 我正在用Swift开发。
在viewDidLoad中的代码:
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let myFirstLabel = UILabel() let myFirstButton = UIButton() myFirstLabel.text = "I made a label on the screen #toogood4you" myFirstLabel.font = UIFont(name: "MarkerFelt-Thin", size: 45) myFirstLabel.textColor = UIColor.redColor() myFirstLabel.textAlignment = .Center myFirstLabel.numberOfLines = 5 myFirstLabel.frame = CGRectMake(15, 54, 300, 500) myFirstButton.setTitle("✸", forState: .Normal) myFirstButton.setTitleColor(UIColor.blueColor(), forState: .Normal) myFirstButton.frame = CGRectMake(15, -50, 300, 500) myFirstButton.addTarget(self, action: "pressed", forControlEvents: .TouchUpInside) self.view.addSubview(myFirstLabel) self.view.addSubview(myFirstButton) } func pressed(sender: UIButton!) { var alertView = UIAlertView(); alertView.addButtonWithTitle("Ok"); alertView.title = "title"; alertView.message = "message"; alertView.show(); }
您只是在select器名称末尾缺less冒号。 由于按下需要一个参数冒号必须在那里。 另外你的按下的function不应该嵌套在viewDidLoad里面。
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let myFirstLabel = UILabel() let myFirstButton = UIButton() myFirstLabel.text = "I made a label on the screen #toogood4you" myFirstLabel.font = UIFont(name: "MarkerFelt-Thin", size: 45) myFirstLabel.textColor = UIColor.redColor() myFirstLabel.textAlignment = .Center myFirstLabel.numberOfLines = 5 myFirstLabel.frame = CGRectMake(15, 54, 300, 500) myFirstButton.setTitle("✸", forState: .Normal) myFirstButton.setTitleColor(UIColor.blueColor(), forState: .Normal) myFirstButton.frame = CGRectMake(15, -50, 300, 500) myFirstButton.addTarget(self, action: #selector(myClass.pressed(_:)), forControlEvents: .TouchUpInside) self.view.addSubview(myFirstLabel) self.view.addSubview(myFirstButton) } func pressed(sender: UIButton!) { var alertView = UIAlertView(); alertView.addButtonWithTitle("Ok"); alertView.title = "title"; alertView.message = "message"; alertView.show(); }
编辑:更新以反映在Swift 2.2中的最佳实践。 应使用#selector(),而不要使用不赞成使用的文字string。
Swift 2.2 Xcode 7.3
由于Objective-Cstring文字现在已经不适用于buttoncallback方法
let button:UIButton = UIButton(frame: CGRectMake(100, 400, 100, 50)) button.backgroundColor = UIColor.blackColor() button.setTitle("Button", forState: UIControlState.Normal) button.addTarget(self, action:#selector(self.buttonClicked), forControlEvents: .TouchUpInside) self.view.addSubview(button) func buttonClicked() { print("Button Clicked") }
Swift 3 Xcode 8
let button:UIButton = UIButton(frame: CGRect(x: 100, y: 400, width: 100, height: 50)) button.backgroundColor = .black button.setTitle("Button", for: .normal) button.addTarget(self, action:#selector(self.buttonClicked), for: .touchUpInside) self.view.addSubview(button) func buttonClicked() { print("Button Clicked") }
是在模拟器。 有些时候,它不会识别select器,它似乎有一个错误。 即使我不面对你的代码,那么我只是改变了行动名称(select器)。 有用
let buttonPuzzle:UIButton = UIButton(frame: CGRectMake(100, 400, 100, 50)) buttonPuzzle.backgroundColor = UIColor.greenColor() buttonPuzzle.setTitle("Puzzle", forState: UIControlState.Normal) buttonPuzzle.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside) buttonPuzzle.tag = 22; self.view.addSubview(buttonPuzzle)
一个示例select器函数在这里:
func buttonAction(sender:UIButton!) { var btnsendtag:UIButton = sender if btnsendtag.tag == 22 { //println("Button tapped tag 22") } }
Swift 3
//Create button let button = UIButton(frame: CGRect(x: 20, y: 20, width: 200, height: 60)) button.setTitle("Email", for: .normal) button.backgroundColor = .white button.setTitleColor(UIColor.black, for: .normal) button.addTarget(self, action: #selector(self.buttonTapped), for: .touchUpInside) myView.addSubview(button) func buttonTapped(sender : UIButton) { //Write button action here }
您应该可以通过访问UIButton的titleLabel属性以编程方式创build自定义UIbutton。
Swift中的每个类的引用 :关于titleLabel属性,它说:“虽然这个属性是只读的,但它自己的属性是可读/写的,主要用这些属性来configurationbutton的文本。
在Swift中 ,你可以像这样直接修改titleLabel的属性:
let myFirstButton = UIButton() myFirstButton.titleLabel!.text = "I made a label on the screen #toogood4you" myFirstButton.titleLabel!.font = UIFont(name: "MarkerFelt-Thin", size: 45) myFirstButton.titleLabel!.textColor = UIColor.red myFirstButton.titleLabel!.textAlignment = .center myFirstButton.titleLabel!.numberOfLines = 5 myFirstButton.titleLabel!.frame = CGRect(x: 15, y: 54, width: 300, height: 500)
编辑
Swift 3.1语法
试试这些..我希望它可以帮助…
override func viewDidLoad() { super.viewDidLoad() let btn = UIButton() btn.frame = CGRectMake(10, 10, 50, 50) //set frame btn.setTitle("btn", forState: .Normal) //set button title btn.setTitleColor(UIColor.redColor(), forState: .Normal) //set button title color btn.backgroundColor = UIColor.greenColor() //set button background color btn.tag = 1 // set button tag btn.addTarget(self, action: "btnclicked:", forControlEvents: .TouchUpInside) //add button action self.view.addSubview(btn) //add button in view }
这些是button点击事件..
func btnclicked(sender: UIButton!) { //write the task you want to perform on buttons click event.. }
Swift 3:你可以以编程方式创build一个UIButton
例如在ViewDidLoad()
一个方法范围内确保向button添加约束,否则你不会看到它
let button = UIButton() button.translatesAutoresizingMaskIntoConstraints = false button.target(forAction: #selector(buttonAction), withSender: self) //button.backgroundColor etc view.addSubview(button) func buttonAction() { //some Action }
或者作为全局variables在你的范围之外,从你的module
任何地方访问它
let button: UIButton = { let b = UIButton() b.translatesAutoresizingMaskIntoConstraints = false //b.backgroundColor etc return b }()
然后你设置约束
func setupButtonView() { view.addSubview(button) button.widthAnchor.constraint(equalToConstant: 40).isActive = true button.heightAnchor.constraint(equalToConstant: 40).isActive = true // etc }
斯威夫特4
private func createButton { let sayButtonT = UIButton(type: .custom) sayButtonT.addTarget(self, action: #selector(sayAction(_:)), for: .touchUpInside) } @objc private func sayAction(_ sender: UIButton?) { }
Swift:Uibutton以编程方式创build
let myButton = UIButton() myButton.titleLabel!.frame = CGRectMake(15, 54, 300, 500) myButton.titleLabel!.text = "Button Label" myButton.titleLabel!.textColor = UIColor.redColor() myButton.titleLabel!.textAlignment = .Center
对于Swift 3 Xcode 8 …….
let button = UIButton(frame: CGRect(x: 0, y: 0, width: container.width, height: container.height)) button.addTarget(self, action: #selector(self.barItemTapped), for: .touchUpInside) func barItemTapped(sender : UIButton) { //Write button action here }
在iOS 9.1/Xcode 7.1.1/Swift 2.1
有约束的UIButton:
import UIKit import MapKit class MapViewController: UIViewController { override func loadView() { mapView = MKMapView() //Create a view... view = mapView //assign it to the ViewController's (inherited) view property. //Equivalent to self.view = mapView myButton = UIButton(type: .RoundedRect) //RoundedRect is an alias for System (tested by printing out their rawValue's) //myButton.frame = CGRect(x:50, y:500, width:70, height:50) //Doesn't seem to be necessary when using constraints. myButton.setTitle("Current\nLocation", forState: .Normal) myButton.titleLabel?.lineBreakMode = .ByWordWrapping //If newline in title, split title onto multiple lines myButton.titleLabel?.textAlignment = .Center myButton.setTitleColor(UIColor.whiteColor(), forState: .Normal) myButton.layer.cornerRadius = 6 //For some reason, a button with type RoundedRect has square corners myButton.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.5) //Make the color partially transparent //Attempt to add padding around text. Shrunk the frame when I tried it. Negative values had no effect. //myButton.titleEdgeInsets = UIEdgeInsetsMake(-10,-10,-10,-10) myButton.contentEdgeInsets = UIEdgeInsetsMake(5,5,5,5) //Add padding around text. myButton.addTarget(self, action: "getCurrentLocation:", forControlEvents: .TouchUpInside) mapView.addSubview(myButton) //Button Constraints: myButton.translatesAutoresizingMaskIntoConstraints = false //*** //bottomLayoutGuide(for tab bar) and topLayoutGuide(for status bar) are properties of the ViewController //To anchor above the tab bar on the bottom of the screen: let bottomButtonConstraint = myButton.bottomAnchor.constraintEqualToAnchor(bottomLayoutGuide.topAnchor, constant: -20) //Implied call of self.bottomLayoutGuide. Anchor 20 points **above** the top of the tab bar. //To anchor to the blue guide line that is inset from the left //edge of the screen in InterfaceBuilder: let margins = view.layoutMarginsGuide //Now the guide is a property of the View. let leadingButtonConstraint = myButton.leadingAnchor.constraintEqualToAnchor(margins.leadingAnchor) bottomButtonConstraint.active = true leadingButtonConstraint.active = true } func getCurrentLocation(sender: UIButton) { print("Current Location button clicked!") }
该button固定在标签栏上方的左下angular。
Swift:Ui Button以编程方式创build,
var button: UIButton = UIButton(type: .Custom) button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0) button.addTarget(self, action: #selector(self.aMethod), forControlEvents: .TouchUpInside) button.tag=2 button.setTitle("Hallo World", forState: .Normal) view.addSubview(button) func aMethod(sender: AnyObject) { print("you clicked on button \(sender.tag)") }
在Swift中,我们可以通过在viewcontroller.swift文件中编写代码来以编程方式制作button…
import UIKit class ViewController: UIViewController { private let firstbutton:UIButton = UIButton() override func viewDidLoad() { super.viewDidLoad() self.firstbutton = UIButton.buttonWithType(UIButtonType.Custom) as? UIButton self.firstbutton!.frame = CGRectMake(100, 200, 100, 100) self.firstbutton!.backgroundColor = UIColor.redColor() self.firstbutton!.setTitle("My Button", forState: UIControlState.Normal) self.firstbutton!.addTarget(self, action:#selector(self.firstButtonClicked), forControlEvents: .TouchUpInside) self.view.addSubview(firstbutton!) } func firstButtonClicked(){ print("First Button Clicked") }
在Objective-C中使用这个
UIButton *testButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [testButton setTitle:@"Go to here" forState:UIControlStateNormal]; testButton.frame = CGRectMake(20, 20, 150, 150); [self.view addSubview:testButton];
在最新的Swift中使用这个
let testButton = UIButton(type: UIButtonType.system) as UIButton testButton.frame = CGRectMake(160, 160, 80, 20) testButton.backgroundColor = UIColor.green testButton.setTitle("Button testing:- ", forState: UIControlState.normal) self.view.addSubview(testButton)
- 如何使用Swift在iOS 8上显示带有文本的活动指示符?
- 如何在键盘上添加ToolBar?
- 如何使用Swift中的Objective-C #define
- 无法使用标识符Cell出队 – 必须为该标识符注册一个nib或一个类,或者在故事板中连接一个原型单元格
- 使用Swift中的UI_USER_INTERFACE_IDIOM()检测当前设备
- 如何在Swift中导入现有的Objective C类
- dyld:Library未加载:@ rpath / libswift_stdlib_core.dylib
- Swift beta 6 – 混淆链接器错误消息
- Swift AnyObject不能转换为String / Int