如何使用 Swift 3 在段落中添加多读/少读? [英] How to add Read more/less in Paragraph with Swift 3?

查看:19
本文介绍了如何使用 Swift 3 在段落中添加多读/少读?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在段落中添加阅读更多/更少文本时遇到问题.该文本需要在 iPod 中,但不需要在 iPad 中.请查看下面的附图.

I have a problem with adding Read More/Less text in paragraph. That text needs in iPod but no need for iPad. Please view the attached image below.


第一个问题是,在我点击阅读更多"按钮之前,左上角有一个空格.当我点击阅读更多"按钮时,标签转到顶部并且没有空格.

第二个问题是如果设备是iPad,阅读更多按钮不需要,因为屏幕尺寸很大并且所有文本都显示.
对于iPod,它需要有那个按钮.


The first problem is that before I clicking "Read More" button, there is a space at the top left corner. When I click on Read More button, the label is goes to top and there is no space.

The second problem is that Read More button does not require if the device is iPad because the screen size is big and all the texts are show.
For iPod, it needs to have that button.


这是我的代码.


Here is my code.

func getLabelHeight(text: String, width: CGFloat, font: UIFont) -> CGFloat {
    let lbl = UILabel(frame: .zero)
    lbl.frame.size.width = width
    lbl.font = font
    lbl.numberOfLines = 0
    lbl.text = text
    lbl.sizeToFit()

    return lbl.frame.size.height
}

@IBAction func btnReadMore(_ sender: Any) {
    if isLabelAtMaxHeight {
        btnReadmore.setTitle("Read more", for: .normal)
        isLabelAtMaxHeight = false
        lblReviewHeight.constant = 93
    }
    else {
        btnReadmore.setTitle("Read less", for: .normal)
        isLabelAtMaxHeight = true
        lblReviewHeight.constant = getLabelHeight(text: lblReview.text!, width: view.bounds.width, font: lblReview.font)

    }

}

当需要或不需要阅读按钮时,我如何检查?请帮我.我不想添加任何其他库文件.

How can I check this when Read button is require or not? Please help me. I don't want to add any other library file.

推荐答案

您可以使用以下代码识别设备(从 此处获取))

You can Identify the device using following code (get it from here)

import UIKit

public extension UIDevice {

    var modelName: String {
        var systemInfo = utsname()
        uname(&systemInfo)
        let machineMirror = Mirror(reflecting: systemInfo.machine)
        let identifier = machineMirror.children.reduce("") { identifier, element in
            guard let value = element.value as? Int8, value != 0 else { return identifier }
            return identifier + String(UnicodeScalar(UInt8(value)))
        }

        switch identifier {
        case "iPod5,1":                                 return "iPod Touch 5"
        case "iPod7,1":                                 return "iPod Touch 6"
        case "iPhone3,1", "iPhone3,2", "iPhone3,3":     return "iPhone 4"
        case "iPhone4,1":                               return "iPhone 4s"
        case "iPhone5,1", "iPhone5,2":                  return "iPhone 5"
        case "iPhone5,3", "iPhone5,4":                  return "iPhone 5c"
        case "iPhone6,1", "iPhone6,2":                  return "iPhone 5s"
        case "iPhone7,2":                               return "iPhone 6"
        case "iPhone7,1":                               return "iPhone 6 Plus"
        case "iPhone8,1":                               return "iPhone 6s"
        case "iPhone8,2":                               return "iPhone 6s Plus"
        case "iPhone9,1", "iPhone9,3":                  return "iPhone 7"
        case "iPhone9,2", "iPhone9,4":                  return "iPhone 7 Plus"
        case "iPhone8,4":                               return "iPhone SE"
        case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return "iPad 2"
        case "iPad3,1", "iPad3,2", "iPad3,3":           return "iPad 3"
        case "iPad3,4", "iPad3,5", "iPad3,6":           return "iPad 4"
        case "iPad4,1", "iPad4,2", "iPad4,3":           return "iPad Air"
        case "iPad5,3", "iPad5,4":                      return "iPad Air 2"
        case "iPad2,5", "iPad2,6", "iPad2,7":           return "iPad Mini"
        case "iPad4,4", "iPad4,5", "iPad4,6":           return "iPad Mini 2"
        case "iPad4,7", "iPad4,8", "iPad4,9":           return "iPad Mini 3"
        case "iPad5,1", "iPad5,2":                      return "iPad Mini 4"
        case "iPad6,3", "iPad6,4", "iPad6,7", "iPad6,8":return "iPad Pro"
        case "AppleTV5,3":                              return "Apple TV"
        case "i386", "x86_64":                          return "Simulator"
        default:                                        return identifier
        }
    }

}

//斯威夫特 3让模型名称 = UIDevice.current.modelName

// Swift 3 let modelName = UIDevice.current.modelName

然后你可以使用 if,else ..

Then you can use if,else ..

if(modelName == iPad 3 || modelName == iPad 4 ||modelName == iPad Air){

   // No Read More button

}else{
  // Add Read More button
}

这篇关于如何使用 Swift 3 在段落中添加多读/少读?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆