我正在尝试创建一个meme生成器应用程序,以更好地理解Swift,Xdode,代理和UIKit.我试图使用NSAttributedStringKey将meme文本的颜色设置为白色并使用黑色笔划.黑色笔划正在工作,但当用户从相机胶卷中选择图像时,不会应用前景色.我已经搜索了StackOverflow,但所有的解决方案都适用于Swift 3,而不是Swift 4.我哪里出错?
我在下面列出了我的源代码.
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var imagePickerView: UIImageView!
@IBOutlet weak var cameraButton: UIBarButtonItem!
@IBOutlet weak var topText: UITextField!
@IBOutlet weak var bottomText: UITextField!
let memeTextAttributes:[String:Any] = [
NSAttributedStringKey.strokeColor.rawValue: UIColor.black,
NSAttributedStringKey.foregroundColor.rawValue: UIColor.white,
NSAttributedStringKey.font.rawValue: UIFont(name: "HelveticaNeue-CondensedBlack", size: 40)!,
NSAttributedStringKey.strokeWidth.rawValue: 3.0]
override func viewDidLoad() {
super.viewDidLoad()
// Diable camer a button if camera ource isn't available
cameraButton.isEnabled = UIImagePickerController.isSourceTypeAvailable(.camera)
topText.defaultTextAttributes = memeTextAttributes
bottomText.defaultTextAttributes = memeTextAttributes
}
// MARK: Delegate Methods
func imagePickerController(_ picker: UIImagePickerController, …Run Code Online (Sandbox Code Playgroud) 我试图在Xcode的项目第37行设置一个断点,我想用LLDB设置它.我知道我可以通过点击装订线手动设置这个断点,但我希望更好地理解使用LLDB.我如何建立以下声明?该声明是否正朝着正确的方向前进?
breakpoint set --file
Run Code Online (Sandbox Code Playgroud) 我正在构建一个待办事项列表应用程序,以便使用tableViews和delegates进行更多练习.我已将我的主tableViewController嵌入到导航控制器中,并且我创建了两个额外的视图控制器,一个用于添加任务,另一个用于编辑任务.当我尝试将一个条形按钮项添加到其中一个附加视图控制器(完成,垃圾等)时,Xcode将项目放在屏幕底部的标签栏中,当我运行应用程序时,这些项目不是可见.我已经改变了我正在使用的设备类型,完全重新启动了Xcode,我无法弄清楚为什么会发生这种情况.我在下面添加了一个截图,这里是一个回购链接.任何想法为什么会这样?
我是面向对象编程的新手,我正在尝试围绕协议、委托和多态性进行思考。我最近观看了一个培训视频,该视频宣传当您有两个具有相似方法实现的相似类时,协议是优雅地实现这一目标的最佳解决方案。那讲得通。然而,一些额外的研究让我发现了多态性,这听起来也是一种首选方法,而您可以简单地使用基类来建模功能并在子类中更新这些方法。
所以,我有两个问题。首先,我对多态的理解正确吗?我对所有这些概念仍然很陌生。其次,协议是否胜过多态性,你什么时候会使用一种而不是另一种?
谢谢!
我试图了解有关委托模式的更多信息.我编写了一个访问用户相机胶卷的应用程序,我希望在用户选择图像后在视图控制器上显示该图像.这是我到目前为止:
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var imagePickerView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
// Delegate Methods
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
imagePickerView.image = image
}
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
self.dismiss(animated: true, completion: nil)
}
@IBAction func pickAnImage(_ sender: Any) {
let pickerController = UIImagePickerController()
present(pickerController, …Run Code Online (Sandbox Code Playgroud) 我创建了一个模因生成器应用程序来更好地学习 Swift 和 Xcode。我正在学习当用户与会被键盘遮挡的文本字段交互时移动视图。我有这个功能,只有一个例外。所需的功能是在用户为底部文本字段输入文本时让视图向上滑动,bot 顶部。无论用户与之交互的文本字段如何,视图都会向上滑动。
如何仅将此功能分配给底部文本字段?这是我的源代码:
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UITextFieldDelegate {
@IBOutlet weak var imagePickerView: UIImageView!
@IBOutlet weak var cameraButton: UIBarButtonItem!
@IBOutlet weak var topText: UITextField!
@IBOutlet weak var bottomText: UITextField!
let memeTextAttributes:[String:Any] = [
NSAttributedStringKey.strokeColor.rawValue: UIColor.black,
NSAttributedStringKey.foregroundColor.rawValue: UIColor.white,
NSAttributedStringKey.font.rawValue: UIFont(name: "HelveticaNeue-CondensedBlack", size: 30)!,
NSAttributedStringKey.strokeWidth.rawValue: -5.0]
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
subscribeToKeyboardNotifications()
}
override func viewDidLoad() {
super.viewDidLoad()
// Diable camer a button if camera ource isn't available
cameraButton.isEnabled = UIImagePickerController.isSourceTypeAvailable(.camera)
topText.delegate = self …Run Code Online (Sandbox Code Playgroud) 我试图更好地了解UITableViews并从头开始构建它们.我想构建一个表格视图,为每个单元格显示不同的背景颜色.我已经构建了一个ColorModel类,它包含一个UIColors类型的数组.我的所有tableview单元格都显示红色背景,这是数组中的最后一种颜色.这是片段:
import Foundation
import UIKit
class ColorModel {
static var colors = [
UIColor.white,
UIColor.blue,
UIColor.black,
UIColor.brown,
UIColor.cyan,
UIColor.green,
UIColor.red
]
}
Run Code Online (Sandbox Code Playgroud)
这是我的主视图控制器语法:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var colorList = ColorModel.colors
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return colorList.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ColorCell", …Run Code Online (Sandbox Code Playgroud) ios ×7
swift ×5
xcode ×2
breakpoints ×1
debugging ×1
delegates ×1
lldb ×1
polymorphism ×1
protocols ×1
uicolor ×1
uiimage ×1
uitableview ×1
uitoolbar ×1