gpt4 book ai didi

ios - 消除项目中的错误

转载 作者:行者123 更新时间:2023-11-30 12:16:08 25 4
gpt4 key购买 nike

我遇到了一个问题,我实现了一种个人资料屏幕,您可以在其中转到设置屏幕并编辑您的图片。当我单击配置文件设置按钮时,也会出现一个可以编辑配置文件的屏幕。以下代码包含推送该 View Controller 的操作

import UIKit

class ProfileeViewController: UIViewController {

let profileSetupTransition = AlterProfileViewController()


override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
view.addSubview(profileFilledImage)
view.addSubview(profileeSettings)
navigationItem.title = "Profile"

///////////////////////////////////////////////////////////

//where all constraints f// constraints for the sign up label/title
_ = profileFilledImage.anchor(view.centerYAnchor, left: view.leftAnchor, bottom: nil, right: nil, topConstant: 30, leftConstant: 25, bottomConstant: 0, rightConstant: 0, widthConstant: 15, heightConstant: 15)

//constraints for the sign up button
_ = profileeSettings.anchor(view.centerYAnchor, left: profileFilledImage.rightAnchor, bottom: nil, right: nil, topConstant: 30, leftConstant: 0, bottomConstant: 0, rightConstant: 0, widthConstant: 140, heightConstant: 15)


///////////////////////////////////////////////////////////



// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

//will just be a nice looking image view to be next to the profile settings button
let profileFilledImage: UIImageView = {
let profileFilledImage = UIImageView()
profileFilledImage.image = UIImage(named: "icons8-User Filled-50")
profileFilledImage.clipsToBounds = true
profileFilledImage.translatesAutoresizingMaskIntoConstraints = false
profileFilledImage.contentMode = .scaleAspectFill
profileFilledImage.layer.masksToBounds = true
return profileFilledImage
}()

// will be the button that the user clicks to edit there profile settings
let profileeSettings: UIButton = {
let profileSetup = UIButton(type: .system)
profileSetup.setTitle("Profile Settings", for: .normal)
profileSetup.setTitleColor(.black, for: .normal)
profileSetup.addTarget(self, action: #selector(handleProfileSetuo), for: .touchUpInside)
return profileSetup
}()


func handleProfileSetuo(){
print("Profile Settings button tapped")
self.navigationController?.pushViewController(profileSetupTransition, animated: true)
//present(profileSetupTransition, animated: true, completion: nil)
}




}

好的,以下方法处理选择用户个人资料图像的图像。我使用 UI 选择器来选择图像,然后尝试将其保存到个人资料 ImageView 中。当选择器关闭时,它会一直返回到 Root View Controller ,此时它应该返回到我可以继续编辑配置文件元素的页面。图片也没有改变。我已经尝试了一切,但没有任何作用。该方法的代码如下

import UIKit

class AlterProfileViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

override func viewDidLoad() {
super.viewDidLoad()

view?.backgroundColor = UIColor.white
navigationItem.title = "Profile Settings"
view.addSubview(selectProfileImage)


///Constraints for all views will go here

_ = selectProfileImage.anchor(view.centerYAnchor, left: view.leftAnchor, bottom: nil, right: nil, topConstant: -275, leftConstant: 135, bottomConstant: 0, rightConstant: 0, widthConstant: 100, heightConstant: 100)

// selectProfileImage.layer.cornerRadius = selectProfileImage.frame.size.width/2

///////////////////////////////////////////////


// Do any additional setup after loading the view.
}



override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
selectProfileImage.layer.cornerRadius = selectProfileImage.frame.size.width / 2;
selectProfileImage.layer.masksToBounds = true

}


override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


//Where all buttons and labels will be added

//will just be a nice looking image view to be next to the profile settings button
lazy var selectProfileImage: UIImageView = {
let selectPicture = UIImageView()

// self.selectProfileImage.layer.cornerRadius = self.selectProfileImage.frame.size.width / 2;
selectPicture.image = UIImage(named: "Paris")

// selectPicture.layer.cornerRadius = selectPicture.frame.size.width / 2;
selectPicture.clipsToBounds = true
selectPicture.translatesAutoresizingMaskIntoConstraints = false
//selectPicture.layer.cornerRadius = selectPicture.frame.size.width/2
selectPicture.contentMode = .scaleAspectFill
selectPicture.isUserInteractionEnabled = true
selectPicture.layer.shouldRasterize = true
// will allow you to add a target to an image click
selectPicture.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImageView)))
selectPicture.layer.masksToBounds = true
return selectPicture
}()


func handleSelectProfileImageView(tapGestureRecognizer: UITapGestureRecognizer) {

print("123")
let picker = UIImagePickerController()
picker.delegate = self
picker.allowsEditing = true
present(picker, animated: true, completion: nil)
}

// will dispaly info of image selected
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
print("info")
var selectedImageFromPicker: UIImage?
if let editedImage = info[UIImagePickerControllerEditedImage] as? UIImage{
print((editedImage as AnyObject).size)
selectedImageFromPicker = editedImage

self.selectProfileImage.image = selectedImageFromPicker
picker.dismiss(animated: true, completion: nil)

}else if let originalImage = info[UIImagePickerControllerOriginalImage] as? UIImage{
print((originalImage as AnyObject).size)
selectedImageFromPicker = originalImage

self.selectProfileImage.image = selectedImageFromPicker

picker.dismiss(animated: true, completion: nil)

}


/*
if let selectedImage = selectedImageFromPicker {
selectProfileImage.image = selectedImage
}
*/

/* dismiss(animated: true, completion: {
self.selectProfileImage.image = selectedImageFromPicker

}) */

}
// will handle the picker being closed/canceled
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
print("picker canceled")
dismiss(animated: true, completion: nil)
}
///////////////////////////////////////////////////////////////////////////////////



}

最佳答案

无论您在何处将 imagePicker 分配给 UIImagePickerController,你需要写这个

func handleSelectProfileImageView(tapGestureRecognizer: UITapGestureRecognizer)  {

print("123")
let picker = UIImagePickerController()
picker.delegate = self
picker.modalPresentationStyle = .overCurrentcontext //This is what I added
picker.allowsEditing = true
present(picker, animated: true, completion: nil)

}

关于ios - 消除项目中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45422403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com