小编Ale*_*289的帖子

如何在swift中从UIImage获取图像扩展/格式

我正在尝试将图像上传到我的服务器,但在上传之前,我需要检查它是否是有效的格式.

假设我只想要.jpeg和.png,所以如果用户从他们的手机中选择.gif格式图像,我会显示一些警告.

我从用户图库/相机获取图像,然后我想检查格式,但我不知道如何检查格式

 @IBAction func selectPictureButtonDidPressed(_ sender: Any) {


        let imagePickerController = UIImagePickerController()
        imagePickerController.delegate = self
        imagePickerController.allowsEditing = true



        let actionSheet = UIAlertController(title: "Photo Source", message: "please choose your source", preferredStyle: .actionSheet)


        // action camera
        let actionCamera = UIAlertAction(title: "Camera", style: .default) { (action) in

            if UIImagePickerController.isSourceTypeAvailable(.camera) {
                imagePickerController.sourceType = .camera
                self.present(imagePickerController, animated: true, completion: nil)

            } else {
                self.showAlert(alertTitle: "Opppss", alertMessage: "camera can't be used / not available", actionTitle: "OK")
                print("camera can't be used / not available")
            }

        } …
Run Code Online (Sandbox Code Playgroud)

uiimage ios swift

2
推荐指数
1
解决办法
7181
查看次数

如何在UI Label中添加手势识别器?

在此输入图像描述

我正在尝试向2月标签添加点击手势,如上图所示,但我不知道为什么当我向UI标签添加手势识别器时,它不起作用,但如果我将该点击手势指定给视图(蓝盒子,它按照我的预期工作.

我们真的可以在UI Label中添加手势识别器吗?或者我该怎么做才能在UI标签上添加手势?

class AttendanceListVC: UIViewController {

    @IBOutlet weak var dummyView: UIView!
    @IBOutlet weak var monthLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()


        prepareTapGestureToChooseMonth()


    }

}



    func prepareTapGestureToChooseMonth() {
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(AttendanceListVC.tapFunction(sender:)))
        tapGesture.numberOfTapsRequired = 1


        monthLabel.addGestureRecognizer(tapGesture)
        dummyView.addGestureRecognizer(tapGesture)
    }

    @objc func tapFunction(sender: UITapGestureRecognizer) {


       // show pop up

    }


}
Run Code Online (Sandbox Code Playgroud)

uigesturerecognizer ios swift

2
推荐指数
1
解决办法
1477
查看次数

表格视图行高改变时如何添加动画?

我正在尝试制作一个 FAQ 视图控制器,我知道有一个名为“FAQView”的 pod 来制作这个 FAQ 页面,但我需要自定义,所以我自己制作。我希望我的最终结果是这样的

在此处输入图片说明

行展开时有一点动画,我需要添加该动画。我的这个常见问题的表格视图是这样的

在此处输入图片说明

当某个单元格中的行高从 80 变为 140 时,我想添加动画

这是我的代码,我的视图控制器代码:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var FAQs = [FAQ]()

    @IBOutlet weak var tableView: UITableView!

    var selectedRow : Int?
    var cellIsExpanded : Bool = false {
        didSet {
            tableView.reloadData()
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.dataSource = self
        tableView.delegate = self
        getFAQ()        
    }

    func getFAQ() {

    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: …
Run Code Online (Sandbox Code Playgroud)

core-animation ios swift

2
推荐指数
1
解决办法
1034
查看次数

如何使用带有基本身份验证的alamofire上传图像?

我正在尝试使用带有此代码的alamofire 4.7.1上传图像,但是老实说,我怀疑我没有编写正确的代码来上传图像

func uploadDefect(defectRemark: String, defectLocation: String, defectImage: UIImage, fileNameImage: String, completion: @escaping(_ errorMessage: String?) -> Void) {

        guard let imgData = defectImage.jpeg(.medium) else {return}

        let urlUpload = URLService.uploadDefect.endPoint

        let username = "admin"
        let password = "1234"

        let credentialData = "\(username):\(password)".data(using: String.Encoding.utf8)!
        let base64Credentials = credentialData.base64EncodedString(options: [])
        let headers = ["Authorization": base64Credentials]
        let parameters : [String:Any] = ["defect_remark" : defectRemark, "defect_location": defectLocation, "tenant_id" : tenantID]

        let url = try! URLRequest(url: URL(string: urlUpload)!, method: .post, headers: headers)

        Alamofire.upload(
            multipartFormData: { multipartFormData …
Run Code Online (Sandbox Code Playgroud)

ios swift alamofire

2
推荐指数
1
解决办法
1902
查看次数

为什么在导航控制器中实现包含时出现 StackOverflowError?

我的项目文件:https : //drive.google.com/file/d/11llz7ylWe7ACyLMBbqp6YzugUL8hhImt/view?usp=sharing

所以我有 2 个导航图。称为主导航图和身份验证图。

我将主图包含在身份验证图中,反之亦然,身份验证图包含在主图中。

我想实现登录系统,所以当用户成功登录时,用户将转到主活动(具有底部导航视图和工具栏),身份验证活动没有底部导航视图或片段。这是图表

  1. 主导航图:

在此处输入图片说明

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/navigation_graph"
            app:startDestination="@id/destination_home">

    <include app:graph="@navigation/auth_graph" />

    <fragment android:id="@+id/destination_home" android:name="com.muchammadagunglaksana.navcontroller.HomeFragment"
              android:label="Home Judul" tools:layout="@layout/fragment_home">
        <action android:id="@+id/action_toAuthActivity" app:destination="@id/auth_graph"/>
    </fragment>


    <fragment android:id="@+id/destination_camera" android:name="com.muchammadagunglaksana.navcontroller.CameraFragment"
              android:label="Camera Judul" tools:layout="@layout/fragment_camera">
        <action android:id="@+id/toPhotosDestination" app:destination="@id/destination_photos"/>
    </fragment>


    <fragment android:id="@+id/destination_photos" android:name="com.muchammadagunglaksana.navcontroller.PhotosFragment"
              android:label="Foto Judul" tools:layout="@layout/fragment_photos">
        <action android:id="@+id/toHomeDestination" app:destination="@id/destination_home"/>
        <argument android:name="numberOfPhotos" app:argType="integer" android:defaultValue="0"/>
    </fragment>


    <fragment android:id="@+id/destination_settings"
              android:name="com.muchammadagunglaksana.navcontroller.SettingsFragment"
              android:label="Setting Judul" tools:layout="@layout/fragment_settings"/>
</navigation>
Run Code Online (Sandbox Code Playgroud)
  1. 验证图: 在此处输入图片说明

    <include app:graph="@navigation/navigation_graph" />
    
    <fragment android:id="@+id/loginFragment" android:name="com.muchammadagunglaksana.navcontroller.LoginFragment"
              android:label="fragment_login" tools:layout="@layout/fragment_login">
        <action android:id="@+id/action_toMainActivity" app:destination="@id/navigation_graph"/>
    </fragment>
    
    Run Code Online (Sandbox Code Playgroud)

当单击 LoginFragment 中的登录按钮时,我使用以下代码:

       login_button.setOnClickListener …
Run Code Online (Sandbox Code Playgroud)

android android-architecture-components android-jetpack

2
推荐指数
1
解决办法
827
查看次数

如何使用云功能删除firebase存储中的图像?

所以我有一个使用nodeJS编写的firestore触发器函数,当firestore中的文档被删除时,我也想删除Firebase存储中存储的图像,存储中的文件名称与删除的文档ID相同。这是我的功能:

const functions = require('firebase-functions')

// initialize firestore database
const admin = require("../utilities/firebase_admin_init")
const db = admin.firestore()
const storage = admin.storage()

// firestore reference
const eventRef = db.collection('events')

exports.firestoreDeleteEventCleanUp = functions.firestore.document('events/{eventId}').onDelete((snapshot,context) => {

    const eventID = context.params.eventId

    // how to delete the image in firebase storage in here ????

})
Run Code Online (Sandbox Code Playgroud)

和管理员初始化

const admin = require("firebase-admin")
const functions = require('firebase-functions')
admin.initializeApp(functions.config().firebase)

module.exports = admin
Run Code Online (Sandbox Code Playgroud)

在Android中,我可以这样做来删除存储中的图像

// Create a storage reference from our app
val storageRef = storage.reference

// Create a reference …
Run Code Online (Sandbox Code Playgroud)

node.js google-cloud-storage firebase google-cloud-functions firebase-storage

1
推荐指数
1
解决办法
1342
查看次数

我可以手动将 Flutter 中 Firestore 的数据源设置为仅来自 Cache 吗?

我打算使用 Flutter 重新创建我的原生 Android 和 iOS 应用程序,因此在深入研究 Flutter 之前,我想确保我需要的一切都可以在 Flutter 上使用。

因此,在原生 Android 和 iOS 中,我可以手动设置我的数据是来自 Firestore 服务器还是来自使用 Kotlin 代码的缓存,以强制系统仅从缓存中获取数据,而不是从服务器获取数据。

db.document(path).get(Source.CACHE).addOnSuccessListener { 
            
}
Run Code Online (Sandbox Code Playgroud)

我可以使用 FlutterFire 在 Flutter 中拥有相同的行为吗?我试图阅读此处文档,但找不到。

在我看来 FlutterFire 中的文档不如这里的native 文档完整。例如,可以像这里的答案一样使用 Field Value 进行更新,但我在 FlutterFire 文档中找不到它。

我错过了什么吗?我是 Flutter 的新手 :)

firebase flutter google-cloud-firestore

1
推荐指数
1
解决办法
41
查看次数

我应该学习什么才能真正理解 iOS 中的 NSData、NSMutableData、NSString?

我是 iOS 开发的中级学生,我正在尝试制作一种将图像上传到服务器的方法。我了解 PHP 中的服务器端脚本。

但是当我按照教程在 Xcode 中上传图像时,我并没有真正掌握 NSData、NSObject、NSMutableData、NSString,似乎教程并不是真正的NSData、NSMutableData、NSString的基本方面......

如果想要漂亮的展示,我应该学习自动布局,集合视图等。

那么,我应该学习iOS开发中什么样的主题才能真正一步一步地理解这些东西?似乎我从来没有专门学习过这些东西。我不知道从哪里开始。

上传图片的代码是这样的:

func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
        let body = NSMutableData();

        if parameters != nil {
            for (key, value) in parameters! {
                body.appendString("--\(boundary)\r\n")
                body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
                body.appendString("\(value)\r\n")
            }
        }

                let filename = "user-profile.jpg"
                let mimetype = "image/jpg"

                body.appendString("--\(boundary)\r\n")
                body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
                body.appendString("Content-Type: \(mimetype)\r\n\r\n")
                body.appendData(imageDataKey)
                body.appendString("\r\n")



        body.appendString("--\(boundary)--\r\n")

        return body
    }



    func generateBoundaryString() -> String {
        return "Boundary-\(NSUUID().UUIDString)"
    }


}


extension …
Run Code Online (Sandbox Code Playgroud)

ios swift

0
推荐指数
1
解决办法
419
查看次数

如何在 Kotlin 中将字符串数组 JSON 转换为 ArrayList?

所以我有这个字符串格式的JSON:

[
  "1.0",
  "1.1",
  "1.2"
]
Run Code Online (Sandbox Code Playgroud)

但我需要在 Kotlin 中将其转换为 ArrayList 吗?我试图找到,但大部分答案都在 Java 中。如果在 Java 中使用 gson 可能会是这样。但我是初学者,我未能将下面的代码转换为 Kotlin

Gson gson = new GsonBuilder().create();
ArrayList<String> theList = gson.fromJson(stringObject, new TypeToken<ArrayList<String>>(){}.getType())
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能将该 json 字符串转换为 Kotlin 中的数组列表?

android json gson kotlin

0
推荐指数
1
解决办法
1695
查看次数

为什么在使用改造时我的类中的init块没有被触发?

所以从服务器我会得到这样的JSON:

{
    "success": "1",
    "data": [
        {
            "id": 1,
            "title": "1",
            "url": "5",
            "image": "resources/assets/images/banner_images/1548316546.mitra lakuin.png",
            "type": "category"
        },
        {
            "id": 2,
            "title": "2",
            "url": "5",
            "image": "resources/assets/images/banner_images/1548316605.mobile banner_-02 (1).png",
            "type": "category"
        },
        {
            "id": 4,
            "title": "4",
            "url": "5",
            "image": "resources/assets/images/banner_images/1547010221.gratis ongkir.png",
            "type": "category"
        },
        {
            "id": 5,
            "title": "Customer",
            "url": "5",
            "image": "resources/assets/images/banner_images/1548316659.customer service.png",
            "type": "category"
        }
    ],
    "message": "Banners are returned successfull."
}
Run Code Online (Sandbox Code Playgroud)

我创建了2个类,以便将该JSON转换为Banner对象.

// 1.
class BannerData(val message : String, val success : String, val data …
Run Code Online (Sandbox Code Playgroud)

android kotlin retrofit2

-1
推荐指数
1
解决办法
68
查看次数

如何从Swift中的字符串制作24小时格式

我想将用户生成的字符串转换为Date数据类型。我希望时间为24小时制

let dateFormatter = DateFormatter()
let timeAsString : String = "22:30"
dateFormatter.dateFormat = "HH:mm"

let timeFromString = dateFormatter.date(from: timeAsString)
Run Code Online (Sandbox Code Playgroud)

结果:“ 2000年1月1日,晚上10:30

但结果为12小时格式。如何获得22:30作为日期数据类型?

ios swift

-2
推荐指数
1
解决办法
7000
查看次数