如何通过标签定义标签
Posted
技术标签:
【中文标题】如何通过标签定义标签【英文标题】:how to define a label by a tag 【发布时间】:2018-04-02 22:15:22 【问题描述】:我尝试制作一组标签,但我无法确定如何确定按下了哪个标签,以便更改它的颜色。如果我像viewq.viewWithTag(1)
这样使用它可以工作,但我怎么能理解我按下的标签?用于更改值。也许我需要一个制作课程?因为我想要(如果你按下一次,设置红色和一些动作,如果再次设置蓝色并做出一些动作)
//
// ViewController.swift
// weqddwqd
//
// Created by Jacket on 4/2/18.
// Copyright © 2018 TryFit. All rights reserved.
//
import UIKit
class ViewController: UIViewController
@IBOutlet weak var viewq: UIView!
var arrq: [String] = ["Hello", "World", "of", "Tags"]
var tags: [Int] = Array()
override func viewDidLoad()
super.viewDidLoad()
createTagsLabel(arrq)
extension ViewController
func createTagsLabel(_: [String])
var xPos:CGFloat = 15.0
var ypos: CGFloat = 130.0
var tag: Int = 0
for word in arrq
let width = word.widthOfString(usingFont: UIFont(name:"verdana", size: 13.0)!)
let checkWholeWidth = CGFloat(xPos) + CGFloat(width) + CGFloat(13.0) + CGFloat(25.5)
if checkWholeWidth > UIScreen.main.bounds.size.width - 30.0
xPos = 15.0
ypos = ypos + 29.0 + 8.0
let textlable = UILabel(frame: CGRect(x: xPos, y: ypos, width: width + 18, height: 18))
textlable.layer.borderWidth = 1.8
textlable.layer.cornerRadius = 8
textlable.layer.borderColor = UIColor(red:0.00, green:0.48, blue:1.00, alpha:1.0).cgColor
textlable.textColor = UIColor(red:0.00, green:0.48, blue:1.00, alpha:1.0)
textlable.text = word
textlable.font = UIFont(name: "verdana", size: 13.0)
textlable.textAlignment = .center
textlable.isUserInteractionEnabled = true
ypos = ypos + 25
textlable.tag = tag
tags.append(tag)
tag = tag + 1
let tap = UITapGestureRecognizer(target: self, action: #selector(self.tapFunction(_:)))
//textlable.addTarget(self, action: #selector(tapFunction(_:)), for: .touchUpInside)
textlable.addGestureRecognizer(tap)
viewq.addSubview(textlable)
func tapFunction(_ recognizer: UITapGestureRecognizer)
print(viewq.viewWithTag(1))
let tag = viewq.viewWithTag(1) as! UILabel
tag.layer.borderColor = UIColor .red.cgColor
tag.textColor = UIColor .red
print("Added")
extension String
func widthOfString(usingFont font: UIFont) -> CGFloat
let fontAttributes = [NSFontAttributeName: font]
let size = self.size(attributes: fontAttributes)
return size.width
func heightOfString(usingFont font: UIFont) -> CGFloat
let fontAttributes = [NSFontAttributeName: font]
let size = self.size(attributes: fontAttributes)
return size.height
【问题讨论】:
请参阅 this 了解您的NSFontAttributeName
问题。
@Xcoder 回答!,我会读它的 :) 关于我的标签的主要问题你能说什么?
每个帖子只问一个问题。删除关于属性文本的部分。
【参考方案1】:
您的tapFunction
可以通过手势轻松获得点击的视图。不需要标签:
func tapFunction(_ recognizer: UITapGestureRecognizer)
if let tappedLabel = recognizer.view as? UILabel
tappedLabel.layer.borderColor = UIColor.red.cgColor
tappedLabel.textColor = .red
print("Added")
【讨论】:
以上是关于如何通过标签定义标签的主要内容,如果未能解决你的问题,请参考以下文章