我如何以编程方式创建图形元素(如UIButton)在Swift?我试图创建和添加按钮到一个视图,但不能。
当前回答
var sampleButton:UIButton?
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
sampleButton = UIButton(type: .RoundedRect)
//sampleButton.frame = CGRect(x:50, y:500, width:70, height:50)
sampleButton!.setTitle("Sample \n UI Button", forState: .Normal)
sampleButton!.titleLabel?.lineBreakMode = .ByWordWrapping
sampleButton!.titleLabel?.textAlignment = .Center
sampleButton!.setTitleColor(UIColor.whiteColor(), forState: .Normal)
sampleButton!.layer.cornerRadius = 6
sampleButton!.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.6)
sampleButton?.tintColor = UIColor.brownColor()
//Add padding around text
sampleButton!.titleEdgeInsets = UIEdgeInsetsMake(-10,-10,-10,-10)
sampleButton!.contentEdgeInsets = UIEdgeInsetsMake(5,5,5,5)
//Action set up
sampleButton!.addTarget(self, action: "sampleButtonClicked", forControlEvents: .TouchUpInside)
self.view.addSubview(sampleButton!)
//Button Constraints:
sampleButton!.translatesAutoresizingMaskIntoConstraints = false
//To anchor above the tab bar on the bottom of the screen:
let bottomButtonConstraint = sampleButton!.bottomAnchor.constraintEqualToAnchor(bottomLayoutGuide.topAnchor, constant: -20)
//edge of the screen in InterfaceBuilder:
let margins = view.layoutMarginsGuide
let leadingButtonConstraint = sampleButton!.leadingAnchor.constraintEqualToAnchor(margins.leadingAnchor)
bottomButtonConstraint.active = true
leadingButtonConstraint.active = true
}
func sampleButtonClicked(){
print("sample Button Clicked")
}
其他回答
如何使用Swift 3.0来做到这一点。
func createButton() {
let button = UIButton(type: .system)
button.frame = CGRect(x: 100.0, y: 100.0, width: 100.0, height: 100.0)
button.setTitle(NSLocalizedString("Button", comment: "Button"), for: .normal)
button.backgroundColor = .green
button.addTarget(self, action: #selector(buttonAction(sender:)), for: .touchUpInside)
view.addSubview(button)
}
@objc func buttonAction(sender: UIButton) {
print("Button pushed")
}
var sampleButton:UIButton?
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
sampleButton = UIButton(type: .RoundedRect)
//sampleButton.frame = CGRect(x:50, y:500, width:70, height:50)
sampleButton!.setTitle("Sample \n UI Button", forState: .Normal)
sampleButton!.titleLabel?.lineBreakMode = .ByWordWrapping
sampleButton!.titleLabel?.textAlignment = .Center
sampleButton!.setTitleColor(UIColor.whiteColor(), forState: .Normal)
sampleButton!.layer.cornerRadius = 6
sampleButton!.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.6)
sampleButton?.tintColor = UIColor.brownColor()
//Add padding around text
sampleButton!.titleEdgeInsets = UIEdgeInsetsMake(-10,-10,-10,-10)
sampleButton!.contentEdgeInsets = UIEdgeInsetsMake(5,5,5,5)
//Action set up
sampleButton!.addTarget(self, action: "sampleButtonClicked", forControlEvents: .TouchUpInside)
self.view.addSubview(sampleButton!)
//Button Constraints:
sampleButton!.translatesAutoresizingMaskIntoConstraints = false
//To anchor above the tab bar on the bottom of the screen:
let bottomButtonConstraint = sampleButton!.bottomAnchor.constraintEqualToAnchor(bottomLayoutGuide.topAnchor, constant: -20)
//edge of the screen in InterfaceBuilder:
let margins = view.layoutMarginsGuide
let leadingButtonConstraint = sampleButton!.leadingAnchor.constraintEqualToAnchor(margins.leadingAnchor)
bottomButtonConstraint.active = true
leadingButtonConstraint.active = true
}
func sampleButtonClicked(){
print("sample Button Clicked")
}
我通常会设置uibutton的扩展。斯威夫特5。
let button: UIButton = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
button.setup(title: "OK", x: 100, y: 430, width: 220, height: 80, color: .yellow)
buttonD.setTitleColor(.black, for: .normal)
}
extension UIButton {
func setup(title: String, x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat, color: UIColor){
frame = CGRect(x: x, y: y, width: width, height: height)
backgroundColor = color
setTitle(title , for: .normal)
}
}
在Swift 4.2中编写下面的示例代码,用于以编程方式添加按钮。
override func viewDidLoad() {
super.viewDidLoad()
let myButton = UIButton(frame: CGRect(x: 100, y: 100, width: 100, height: 50))
myButton.backgroundColor = .green
myButton.setTitle("Hello UIButton", for: .normal)
myButton.addTarget(self, action: #selector(myButtonAction), for: .touchUpInside)
self.view.addSubview(myButton)
}
@objc func myButtonAction(sender: UIButton!) {
print("My Button tapped")
}
从storyboard创建UIButton: 1 -将UIButton对象从对象库拖到storyboard文件中的ViewController 2 -节目助理编辑 3 -从上面创建的UIButton中右键拖动到你的类中。结果如下:
@IBAction func buttonActionFromStoryboard(sender: UIButton)
{
println("Button Action From Storyboard")
}
为创建UIButton编程: 1-写入“override func viewDidLoad()”:
let uiButton = UIButton.buttonWithType(UIButtonType.System) as UIButton
uiButton.frame = CGRectMake(16, 116, 288, 30)
uiButton.setTitle("Second", forState: UIControlState.Normal);
uiButton.addTarget(self, action: "buttonActionFromCode:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(uiButton)
2-添加IBAction功能:
@IBAction func buttonActionFromCode(sender:UIButton)
{
println("Button Action From Code")
}
推荐文章
- 如何在iOS中使用Swift编程segue
- Swift -整数转换为小时/分钟/秒
- 如何舍入一个双到最近的Int在迅速?
- 扁平化数组的数组在Swift
- Swift:声明一个空字典
- 在成功提交我的应用程序后,“太多符号文件”
- 从数组中随机选择一个元素
- 首先添加一个UIView,甚至是导航栏
- 我如何改变UIButton标题颜色?
- 在Swift中如何调用GCD主线程上的参数方法?
- NSLayoutConstraints是可动画的吗?
- iOS -构建失败,CocoaPods无法找到头文件
- CFNetwork SSLHandshake iOS 9失败
- swift语言中的结构与类
- 我如何在Swift连接字符串?