ฉันจะสร้างไฟล์ UILabel
โปรแกรมโดยใช้ Swift ใน Xcode 6 ได้อย่างไร
ฉันได้เริ่มต้นด้วย "Single View Application" ใหม่ใน Xcode 6 และเลือก Swift สำหรับโปรเจ็กต์นี้ ฉันมีไฟล์ของฉันAppDelegate.swift
และViewController.swift
ฉันไม่แน่ใจว่าจะทำจากที่นี่
ฉันจะสร้างไฟล์ UILabel
โปรแกรมโดยใช้ Swift ใน Xcode 6 ได้อย่างไร
ฉันได้เริ่มต้นด้วย "Single View Application" ใหม่ใน Xcode 6 และเลือก Swift สำหรับโปรเจ็กต์นี้ ฉันมีไฟล์ของฉันAppDelegate.swift
และViewController.swift
ฉันไม่แน่ใจว่าจะทำจากที่นี่
คำตอบ:
override func viewDidLoad()
{
super.viewDidLoad()
var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.center = CGPointMake(160, 284)
label.textAlignment = NSTextAlignment.Center
label.text = "I'm a test label"
self.view.addSubview(label)
}
อัปเดต Swift 3.0+:
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
label.center = CGPoint(x: 160, y: 285)
label.textAlignment = .center
label.text = "I'm a test label"
self.view.addSubview(label)
นี่คือรหัสที่ถูกต้องสำหรับ Swift 3 พร้อมความคิดเห็นเพื่อวัตถุประสงค์ในการเรียนการสอน:
override func viewDidLoad()
{
super.viewDidLoad()
// CGRectMake has been deprecated - and should be let, not var
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
// you will probably want to set the font (remember to use Dynamic Type!)
label.font = UIFont.preferredFont(forTextStyle: .footnote)
// and set the text color too - remember good contrast
label.textColor = .black
// may not be necessary (e.g., if the width & height match the superview)
// if you do need to center, CGPointMake has been deprecated, so use this
label.center = CGPoint(x: 160, y: 284)
// this changed in Swift 3 (much better, no?)
label.textAlignment = .center
label.text = "I am a test label"
self.view.addSubview(label)
}
หากต้องการเพิ่มคำตอบที่ดีอยู่แล้วคุณอาจต้องการเพิ่มป้ายกำกับหลายป้ายในโครงการของคุณดังนั้นการทำทั้งหมดนี้ (ขนาดการตั้งค่ารูปแบบ ฯลฯ ) จะเป็นเรื่องยาก ในการแก้ปัญหานี้คุณสามารถสร้างคลาส UILabel แยกต่างหาก
import UIKit
class MyLabel: UILabel {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initializeLabel()
}
override init(frame: CGRect) {
super.init(frame: frame)
initializeLabel()
}
func initializeLabel() {
self.textAlignment = .left
self.font = UIFont(name: "Halvetica", size: 17)
self.textColor = UIColor.white
}
}
หากต้องการใช้ให้ทำดังต่อไปนี้
import UIKit
class ViewController: UIViewController {
var myLabel: MyLabel()
override func viewDidLoad() {
super.viewDidLoad()
myLabel = MyLabel(frame: CGRect(x: self.view.frame.size.width / 2, y: self.view.frame.size.height / 2, width: 100, height: 20))
self.view.addSubView(myLabel)
}
}
self.text
ในชั้นเรียนเพื่อแยกเช่นนี้:myLabel = MyLabel(string: "text")
myLabel.text = "text"
Swift 4.X และ Xcode 10
let lbl = UILabel(frame: CGRect(x: 10, y: 50, width: 230, height: 21))
lbl.textAlignment = .center //For center alignment
lbl.text = "This is my label fdsjhfg sjdg dfgdfgdfjgdjfhg jdfjgdfgdf end..."
lbl.textColor = .white
lbl.backgroundColor = .lightGray//If required
lbl.font = UIFont.systemFont(ofSize: 17)
//To display multiple lines in label
lbl.numberOfLines = 0 //If you want to display only 2 lines replace 0(Zero) with 2.
lbl.lineBreakMode = .byWordWrapping //Word Wrap
// OR
lbl.lineBreakMode = .byCharWrapping //Charactor Wrap
lbl.sizeToFit()//If required
yourView.addSubview(lbl)
หากคุณมีป้ายกำกับหลายป้ายในชั้นเรียนของคุณให้ใช้ส่วนขยายเพื่อเพิ่มคุณสมบัติ
//Label 1
let lbl1 = UILabel(frame: CGRect(x: 10, y: 50, width: 230, height: 21))
lbl1.text = "This is my label fdsjhfg sjdg dfgdfgdfjgdjfhg jdfjgdfgdf end..."
lbl1.myLabel()//Call this function from extension to all your labels
view.addSubview(lbl1)
//Label 2
let lbl2 = UILabel(frame: CGRect(x: 10, y: 150, width: 230, height: 21))
lbl2.text = "This is my label fdsjhfg sjdg dfgdfgdfjgdjfhg jdfjgdfgdf end..."
lbl2.myLabel()//Call this function from extension to all your labels
view.addSubview(lbl2)
extension UILabel {
func myLabel() {
textAlignment = .center
textColor = .white
backgroundColor = .lightGray
font = UIFont.systemFont(ofSize: 17)
numberOfLines = 0
lineBreakMode = .byCharWrapping
sizeToFit()
}
}
คุณสามารถสร้างป้ายกำกับโดยใช้รหัสด้านล่าง Updated
let yourLabel: UILabel = UILabel()
yourLabel.frame = CGRect(x: 50, y: 150, width: 200, height: 21)
yourLabel.backgroundColor = UIColor.orange
yourLabel.textColor = UIColor.black
yourLabel.textAlignment = NSTextAlignment.center
yourLabel.text = "test label"
self.view.addSubview(yourLabel)
อีกรหัส swift3
let myLabel = UILabel()
myLabel.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
myLabel.center = CGPoint(x: 0, y: 0)
myLabel.textAlignment = .center
myLabel.text = "myLabel!!!!!"
self.view.addSubview(myLabel)
อีกทางเลือกหนึ่งในการใช้การปิดเพื่อแยกโค้ดออกเป็นสิ่งที่ดีกว่าเล็กน้อยโดยใช้ Swift 4:
class theViewController: UIViewController {
/** Create the UILabel */
var theLabel: UILabel = {
let label = UILabel()
label.lineBreakMode = .byWordWrapping
label.textColor = UIColor.white
label.textAlignment = .left
label.numberOfLines = 3
label.font = UIFont(name: "Helvetica-Bold", size: 22)
return label
}()
override func viewDidLoad() {
/** Add theLabel to the ViewControllers view */
view.addSubview(theLabel)
}
override func viewDidLayoutSubviews() {
/* Set the frame when the layout is changed */
theLabel.frame = CGRect(x: 0,
y: 0,
width: view.frame.width - 30,
height: 24)
}
}
หมายเหตุแอตทริบิวต์สำหรับtheLabel
ยังคงสามารถเปลี่ยนแปลงได้ทุกครั้งที่ใช้ฟังก์ชันใน VC คุณเพียงแค่ตั้งค่าเริ่มต้นต่างๆภายในการปิดและลดความยุ่งเหยิงในฟังก์ชันต่างๆเช่นviewDidLoad()
UILabel(frame:)
) หรือที่อื่น ๆ ในบล็อก ( label.frame=
) การตั้งค่าเฟรมในภายหลัง (เช่นในviewDidLayoutSubviews()
) ทำให้ป้ายกำกับไม่ปรากฏขึ้น
สร้างUILabel
มุมมองภายนอกviewDidLoad
ชั้นเรียนแล้วเพิ่มมุมมองนั้นในมุมมองหลักของคุณในviewDidLoad
วิธีการ
lazy var myLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.text = "This is label view."
label.font = UIFont.systemFont(ofSize: 12)
return label
}()
จากนั้นเพิ่มview
เข้าไปviewDidLoad()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(myLabel)
// Set its constraint to display it on screen
myLabel.widthAnchor.constraint(equalToConstant: 200).isActive = true
myLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
myLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}
lazy var variable_name = ""
มันจะไม่ใช้หน่วยความจำของคุณเว้นแต่ว่าแอปของคุณจะเรียกตัวแปรนั้น หากไม่ได้ใช้คุณสมบัตินั้นจะไม่มีวันดำเนินการ
สร้างฉลากได้อย่างรวดเร็ว 4
let label = UILabel(frame: CGRect(x: self.view.frame.origin.x, y: self.view.frame.origin.y, width: self.view.frame.size.width, height: 50))
label.textAlignment = .center
label.text = "Hello this my label"
//To set the color
label.backgroundColor = UIColor.white
label.textColor = UIColor.black
//To set the font Dynamic
label.font = UIFont(name: "Helvetica-Regular", size: 20.0)
//To set the system font
label.font = UIFont.systemFont(ofSize: 20.0)
//To display multiple lines
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping //Wrap the word of label
label.lineBreakMode = .byCharWrapping //Wrap the charactor of label
label.sizeToFit()
self.view.addSubview(label)
Swift 4.2 และ Xcode 10 อยู่ที่ไหนสักแห่งใน ViewController:
private lazy var debugInfoLabel: UILabel = {
let label = UILabel()
label.textColor = .white
label.translatesAutoresizingMaskIntoConstraints = false
yourView.addSubview(label)
NSLayoutConstraint.activate([
label.centerXAnchor.constraint(equalTo: suggestionView.centerXAnchor),
label.centerYAnchor.constraint(equalTo: suggestionView.centerYAnchor, constant: -100),
label.widthAnchor.constraint(equalToConstant: 120),
label.heightAnchor.constraint(equalToConstant: 50)])
return label
}()
...
โดยใช้:
debugInfoLabel.text = debugInfo
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
label.center = CGPoint(x: 160, y: 285)
label.textAlignment = .center
label.text = "My label"
self.view.addSubview(label)
ลองใช้โค้ดด้านบนใน ViewDidLoad
Swift 4.2 และ Xcode 10 เริ่มต้นป้ายกำกับก่อน viewDidLoad
lazy var topLeftLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.text = "TopLeft"
return label
}()
ใน viewDidLoad เพิ่มป้ายกำกับในมุมมองและใช้ข้อ จำกัด
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(topLeftLabel)
topLeftLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10).isActive = true
topLeftLabel.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 10).isActive = true
}