UISliders 和 UILabels 和 viewControllers
UISliders and UILabels and viewControllers
我如何才能 increase/decrease 通过使用位于不同 viewController 中的 UISlider 来调整我的 UILabel 的大小?
我有一个带有 UILabel1 的 viewController1,我有一个带有 UISlider 的 viewController2。使用 UISlider,我有另一个标签 UILabel2,只是为了查看文本有多大。我也希望 UILabel1 到 increase/decrease 而不是只有一个标签到 increase/decrease.
用于 UISLider 的代码是,
@IBOutlet weak var label: UILabel!
@IBOutlet weak var slider: UISlider!
@IBAction func sizeChanged(sender: UISlider) {
let senderValue = CGFloat(sender.value)
label.font = UIFont(name: label.font.fontName, size: senderValue)
}
这段带有 UILabel 的代码用于 viewController2,我想更改 viewController1 中另一个 UILabel 的大小。
这是viewController1:
import UIKit
class ViewController1: ViewController {
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var scrollView1: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
scrollView1.contentSize.height = 5000
scrollView1.contentSize.width = 375
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
这是viewController2:
@IBOutlet weak var label: UILabel!
@IBOutlet weak var slider: UISlider!
@IBAction func sizeChanged(sender: UISlider) {
let senderValue = CGFloat(sender.value)
label.font = UIFont(name: label.font.fontName, size: senderValue)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
任何帮助都会很棒。
我认为,您可以查看 NSNotificationCenter's 功能,尤其是 NSNotification's
userInfo:
范围。您可以将滑块的值从第一个 VC 传递到 userInfo
,然后在第二个 VC.
中收听此通知
Objective-C 中此方法的绝佳示例:
在计算机编程中,当某些事情看起来困难或复杂时,您应该寻找方法将其分解为更容易解决的较小问题。你的就是一个很好的例子。你问:
How would I be able to increase/decrease the size of my UILabel by using UISlider which is in a different viewController?
那么,要实现这一目标,任何人都需要执行哪些步骤?这里基本上分为三个步骤:
- 获取滑块的值。
- 将值从一个视图控制器发送到另一个。
- 使用一个值来设置标签的大小。
如何获取滑块的值? 这很简单。将滑块的目标设置为管理它的视图控制器,并将其动作设置为视图控制器中的某个动作。当滑块更改时将调用该方法。该操作将如下所示:
@IBAction func sliderValueChanged(sender: UISlider) {
let value = sender.value
// do something with the value
}
如何将数据从一个视图控制器发送到另一个视图控制器? SO 上有很多问题都涵盖了这一点。其中,Passing Data Between View Controllers 可能是规范的。有很多选项,包括:
让一个视图控制器调用另一个视图控制器中的方法。如果带有滑块的视图控制器引用了带有标签的视图控制器,它只需要在滑块更改时调用一些方法,将新值传递给另一个控制器。或者,可能是带有标签的视图控制器引用了带有滑块的视图控制器,如果滑块的控制器是由标签的控制器创建的,这是非常典型的。在这种情况下,标签的控制器可以调用方法来检索值。
将数据广播给使用通知收听的任何人。当滑块发生变化时,它的操作可以 post 发出具有新值的通知。任何对象,包括带有标签的控制器,都可以侦听该通知并对其进行操作。
使用合适的数据模型。 MVC(模型-视图-控制器)范例在 Cocoa 中很重要,如果您的应用程序非常重要,它应该有自己的数据模型。该模型可能是存储滑块最新设置的合理位置,带有标签的控制器可以在其视图出现时从那里读取它。
将值存储在某处。全局变量是通往设计糟糕的应用程序的捷径,但它们的简单性对初学者很有吸引力。更好的选择可能是默认系统,它至少让应用程序退出时值仍然存在。
所以,那里有很多选择。忘掉滑块和标签,想想你的应用程序中的视图控制器应该如何相互通信。一旦你弄清楚了,滑块设置只是他们必须互相说的另一件事。您选择的样式会告诉您在上面的操作方法中放置什么来代替注释。
如何设置标签的大小?有点不清楚你说的设置大小是什么意思。你想改变字体大小,还是标签的宽度,或者宽度和高度?无论如何,对于您可能想要设置的标签的所有属性,都有访问器,因此请查看文档。当标签的视图控制器通过上述方法之一获取新值时,它应该更新标签的适当 属性 。您通常将标签连接到视图控制器中的 IBOutlet
属性 以使控制器可以轻松访问标签。
我如何才能 increase/decrease 通过使用位于不同 viewController 中的 UISlider 来调整我的 UILabel 的大小?
我有一个带有 UILabel1 的 viewController1,我有一个带有 UISlider 的 viewController2。使用 UISlider,我有另一个标签 UILabel2,只是为了查看文本有多大。我也希望 UILabel1 到 increase/decrease 而不是只有一个标签到 increase/decrease.
用于 UISLider 的代码是,
@IBOutlet weak var label: UILabel!
@IBOutlet weak var slider: UISlider!
@IBAction func sizeChanged(sender: UISlider) {
let senderValue = CGFloat(sender.value)
label.font = UIFont(name: label.font.fontName, size: senderValue)
}
这段带有 UILabel 的代码用于 viewController2,我想更改 viewController1 中另一个 UILabel 的大小。
这是viewController1:
import UIKit
class ViewController1: ViewController {
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var scrollView1: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
scrollView1.contentSize.height = 5000
scrollView1.contentSize.width = 375
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
这是viewController2:
@IBOutlet weak var label: UILabel!
@IBOutlet weak var slider: UISlider!
@IBAction func sizeChanged(sender: UISlider) {
let senderValue = CGFloat(sender.value)
label.font = UIFont(name: label.font.fontName, size: senderValue)
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
任何帮助都会很棒。
我认为,您可以查看 NSNotificationCenter's 功能,尤其是 NSNotification's
userInfo:
范围。您可以将滑块的值从第一个 VC 传递到 userInfo
,然后在第二个 VC.
Objective-C 中此方法的绝佳示例:
在计算机编程中,当某些事情看起来困难或复杂时,您应该寻找方法将其分解为更容易解决的较小问题。你的就是一个很好的例子。你问:
How would I be able to increase/decrease the size of my UILabel by using UISlider which is in a different viewController?
那么,要实现这一目标,任何人都需要执行哪些步骤?这里基本上分为三个步骤:
- 获取滑块的值。
- 将值从一个视图控制器发送到另一个。
- 使用一个值来设置标签的大小。
如何获取滑块的值? 这很简单。将滑块的目标设置为管理它的视图控制器,并将其动作设置为视图控制器中的某个动作。当滑块更改时将调用该方法。该操作将如下所示:
@IBAction func sliderValueChanged(sender: UISlider) {
let value = sender.value
// do something with the value
}
如何将数据从一个视图控制器发送到另一个视图控制器? SO 上有很多问题都涵盖了这一点。其中,Passing Data Between View Controllers 可能是规范的。有很多选项,包括:
让一个视图控制器调用另一个视图控制器中的方法。如果带有滑块的视图控制器引用了带有标签的视图控制器,它只需要在滑块更改时调用一些方法,将新值传递给另一个控制器。或者,可能是带有标签的视图控制器引用了带有滑块的视图控制器,如果滑块的控制器是由标签的控制器创建的,这是非常典型的。在这种情况下,标签的控制器可以调用方法来检索值。
将数据广播给使用通知收听的任何人。当滑块发生变化时,它的操作可以 post 发出具有新值的通知。任何对象,包括带有标签的控制器,都可以侦听该通知并对其进行操作。
使用合适的数据模型。 MVC(模型-视图-控制器)范例在 Cocoa 中很重要,如果您的应用程序非常重要,它应该有自己的数据模型。该模型可能是存储滑块最新设置的合理位置,带有标签的控制器可以在其视图出现时从那里读取它。
将值存储在某处。全局变量是通往设计糟糕的应用程序的捷径,但它们的简单性对初学者很有吸引力。更好的选择可能是默认系统,它至少让应用程序退出时值仍然存在。
所以,那里有很多选择。忘掉滑块和标签,想想你的应用程序中的视图控制器应该如何相互通信。一旦你弄清楚了,滑块设置只是他们必须互相说的另一件事。您选择的样式会告诉您在上面的操作方法中放置什么来代替注释。
如何设置标签的大小?有点不清楚你说的设置大小是什么意思。你想改变字体大小,还是标签的宽度,或者宽度和高度?无论如何,对于您可能想要设置的标签的所有属性,都有访问器,因此请查看文档。当标签的视图控制器通过上述方法之一获取新值时,它应该更新标签的适当 属性 。您通常将标签连接到视图控制器中的 IBOutlet
属性 以使控制器可以轻松访问标签。