INFOPLIST_KEY_NSCameraUsageDescription="We need to use your camera to change the avatar";
INFOPLIST_KEY_NSMicrophoneUsageDescription="Microphone permission is required for voice input";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription="We need to use your photo album to change your profile picture";
INFOPLIST_KEY_NSSpeechRecognitionUsageDescription="Requires your speech recognition to process audio";
INFOPLIST_KEY_NSUserTrackingUsageDescription="We need your permission to track your usage habits in order to provide a more personalized advertising experience";
INFOPLIST_KEY_NSCameraUsageDescription="We need to use your camera to change the avatar";
INFOPLIST_KEY_NSMicrophoneUsageDescription="Microphone permission is required for voice input";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription="We need to use your photo album to change your profile picture";
INFOPLIST_KEY_NSSpeechRecognitionUsageDescription="Requires your speech recognition to process audio";
INFOPLIST_KEY_NSUserTrackingUsageDescription="We need your permission to track your usage habits in order to provide a more personalized advertising experience";
letalert=SpeakPublicTipsViewCtr(configs:SpeakPublicTipsViewCtr.PublicTipsModel(icon:UIImage(named:"img_course"),title:"skip a grade?",descAttr:"Do you want to unlock all courses immediately",sureAction:"Yes, unlock immediately",cancel:"Wait a minute"))
SpeakPayDescritionL.text="Unlimited dialogue learning, unlimited answer correction, real-time Al feedback, unlimited word parsing\nFree for 3 days, then \(p?.localizedPrice??"--") per week"
letatt="Unlimited dialogue learning, unlimited answer correction, real-time Al feedback, unlimited word parsing\n".attributed().font(UIFont.montserrat(.regular,size:16)).color(.init(hex:0x000000,alpha:0.54)).build().combined(with:["Free for 3 days, then \(p?.localizedPrice??"--") per week".attributed().font(UIFont.montserrat(.regular,size:18)).color(.init(hex:0x000000,alpha:1)).build()])
// SpeakPayDescritionL.text = "Unlimited dialogue learning, unlimited answer correction, real-time Al feedback, unlimited word parsing\nFree for 3 days, then \(p?.localizedPrice ?? "--") per week"
letterms="Terms of Service.".attributed().font(UIFont.montserrat(.medium,size:10)).underline(.single).paragraphStyle(.center,lineSpacing:4).build()
letatt="Proceeding further indicates your agreement to our ".attributed().paragraphStyle(.center,lineSpacing:4).build().combined(with:[privacy,"and ",terms])
letatt="Proceeding further indicates your agreement to our ".attributed().paragraphStyle(.center,lineSpacing:4).build().combined(with:[privacy,"\nand ",terms])
letterms="Terms of Service.".attributed().font(UIFont.montserrat(.medium,size:10)).underline(.single).paragraphStyle(.center,lineSpacing:4).build()
letatt="Proceeding further indicates your agreement to our ".attributed().paragraphStyle(.center,lineSpacing:4).build().combined(with:[privacy," and ",terms])
// SpeakDesc.AddTextTap(["Privacy Policy","Terms of Service."])
letterms="Terms of Service.".attributed().font(UIFont.montserrat(.medium,size:10)).underline(.single).underlineColor().paragraphStyle(.center,lineSpacing:4).build()
letatt="Proceeding further indicates your agreement to our ".attributed().paragraphStyle(.center,lineSpacing:4).build().combined(with:[privacy,"\nand ",terms])
SpeakDesc.attributedText=att
SpeakDesc.callblack={[weakself]textin
guardletv:String=textas?Stringelse{return}
ifv=="Privacy Policy"{
self?.PrivacyPolicy()
}else{
self?.TermsOfService()
// SpeakDesc.callblack = { [weak self] text in
// guard let v:String = text as? String else { return }
<labelopaque="NO"userInteractionEnabled="NO"contentMode="left"horizontalHuggingPriority="251"verticalHuggingPriority="251"text="Proceeding further indicates your agreement to our Privacy Policy and Terms of Service."textAlignment="center"lineBreakMode="tailTruncation"numberOfLines="0"baselineAdjustment="alignBaselines"adjustsFontSizeToFit="NO"translatesAutoresizingMaskIntoConstraints="NO"id="ZTC-hh-3ze">
<labelopaque="NO"userInteractionEnabled="NO"contentMode="left"horizontalHuggingPriority="251"verticalHuggingPriority="251"text="———————— or ————————"textAlignment="center"lineBreakMode="tailTruncation"baselineAdjustment="alignBaselines"adjustsFontSizeToFit="NO"translatesAutoresizingMaskIntoConstraints="NO"id="SQY-CO-4VW">