2017-03-16 3 views
0

Ich habe ein Problem mit dem Hinzufügen von Lesen Sie mehr/Less Text im Absatz. Dieser Text braucht im iPod aber keine Notwendigkeit für iPad. Bitte sehen Sie sich das beigefügte Bild unten an.
Wie fügt man mehr/weniger in Absatz mit Swift 3?

enter image description here


Das erste Problem ist, dass, bevor ich auf "Read More" klicken, dort ein Raum ist in der linken oberen Ecke. Wenn ich auf "Mehr lesen" -Button klicke, wird die Beschriftung auf oben und es gibt kein Leerzeichen.

Das Sekunden Problem ist, dass Schaltfläche Mehr lesen nicht benötigt, wenn das Gerät ist iPad weil die Bildschirmgröße groß ist und alle Texte sind zeigen.
Für iPod muss es diese Taste haben.

enter image description here


Hier ist mein 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) 

    } 

} 

Wie kann ich das überprüfen, wenn Read-Taste erforderlich ist oder nicht? Bitte hilf mir. Ich möchte keine andere Bibliotheksdatei hinzufügen.

Antwort

0

Sie das Gerät identifizieren kann folgenden Code (erhalten sie von 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 
     } 
    } 

} 

// Swift 3 lassen modelname = UIDevice.current.modelName

Dann können Sie verwenden, wenn andere.

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

    // No Read More button 

}else{ 
    // Add Read More button 
} 
Verwandte Themen