Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 3

0
votes
answers
41 views
+10

如何更改軟鍵盤在iOS中的顯示的標題?

0

下面是我的軟鍵盤的標題鍵盤選項中在iOS的當前顯示:如何更改軟鍵盤在iOS中的顯示的標題?

enter image description here

我寧願爲它顯示像Gboard例如,它上面,簡稱爲「ASETNIOP」上作爲樣機這裏顯示頂線和「多國語言」的,:

enter image description here

我可以改變小寫的前綴,如果我在靶修改擴展名的「顯示名稱」 - >常規 - >身份,但我不能消除它(或ASSO ciated破折號)完全:

enter image description here

和(雖然我實際上並不需要做到這一點),它看起來並不像它可以在所有的改變主要應用程序的顯示名稱 - 它顯示爲灰色:

enter image description here

任何人都可以讓我知道我需要去進行這些更改,並在那裏我需要去改變語言名稱呢?

沙发
0
1

對於多語言,打開你的info.plist爲擴展部分的源代碼。 然後找

<key>PrimaryLanguage</key> 
    <string>en-US</string> 

<key>PrimaryLanguage</key> 
    <string>mul</string> 
+1

下NSExtension然後NSExtensionAttributes組發現它和它的工作就像一個魅力。謝謝! – asetniop

+0

@asetniop,你是如何解決你的命名問題的?我其實需要那個。 –

+0

見@Yevhen杜比寧的答案如下 - 我只需要改變捆綁顯示名稱來獲得我想要的結果,但他的回答似乎涵蓋你可能想要做的一切。 – asetniop

板凳
0
0

鍵盤應用程序擴展名(或APPEX)的iOS顯示器下的「環球報」按鈕的菜單從鍵盤APPEX的元數據所取代。在你的情況,這是asentitop目標。所以,檢查/應用下面的這個目標:

轉到目標的Info.plist並更改以下鍵。

<key>CFBundleDisplayName</key> 
    <string>ASETNIOP</string> 
<key>CFBundleName</key> 
    <string>ASETNIOP</string> 

高級設置將採用國產化,爲您的自定義鍵盤的擴展顯示名稱。

  • 轉到您的Xcode項目,並選擇您鍵盤延長目標
  • 轉到一般選項卡,設置顯示名稱${PRODUCT_NAME}
  • 轉到信息選項卡,並設置CFBundleName${PRODUCT_NAME}
  • 確保CFBundleDisplayName設置爲${PRODUCT_NAME} 現在

    ,這種設置可以讓你從一個地方設置鍵盤APPEX的名字 - 生成設置標籤

  • 轉到生成設置標籤和搜索PRODUCT_NAME。編輯產品名稱ASETNIOP
  • Localize Info.plist這些密鑰添加到相應的本地化:

    "CFBundleDisplayName" ="ASETNIOP"; 
    "CFBundleName" = "ASETNIOP"; 
    
+0

我做了一個單獨的更改 - 擴展名爲info.plist中的Bundle Display Name - 它似乎完成了我正在尋找的內容。謝謝! – asetniop

+0

編輯'CFBundleName'可能對您的任務是可選的,並且如果需要,密鑰可以具有其他值。但是,我不知道有什麼時候這可能是需要的。 –

0
votes
answers
61 views
+10

iPhone X不尊重設置標籤欄隱藏動畫

0

我有一個視圖控制器被推到一個導航控制器是在標籤欄控制器內。視圖控制器隱藏底部按鈕,當按下按鈕時,會出現它顯示的工具欄。無論我嘗試什麼,當視圖控制器被按下或彈出時,它都不會停止向上/向下滑動工具欄的動畫。這似乎只是iPhone X上的一個問題。有誰知道如何解決它?iPhone X不尊重設置標籤欄隱藏動畫

+0

同樣的問題: https://stackoverflow.com/questions/46232929/why-page-push-animation-tabbar-moving-up-in-the -iPhone-X – Alexander

沙发
0
0

這個答案https://stackoverflow.com/a/47225653/1211917幫助我:

class SafeAreaFixTabBar: UITabBar { 

    var oldSafeAreaInsets = UIEdgeInsets.zero 

    @available(iOS 11.0, *) 
    override func safeAreaInsetsDidChange() { 
     super.safeAreaInsetsDidChange() 

     if oldSafeAreaInsets != safeAreaInsets { 
      oldSafeAreaInsets = safeAreaInsets 

      invalidateIntrinsicContentSize() 
      superview?.setNeedsLayout() 
      superview?.layoutSubviews() 
     } 
    } 

    override func sizeThatFits(_ size: CGSize) -> CGSize { 
     var size = super.sizeThatFits(size) 
     if #available(iOS 11.0, *) { 
      let bottomInset = safeAreaInsets.bottom 
      if bottomInset > 0 && size.height < 50 && (size.height + bottomInset < 90) { 
       size.height += bottomInset 
      } 
     } 
     return size 
    } 

    override var frame: CGRect { 
     get { 
      return super.frame 
     } 
     set { 
      var tmp = newValue 
      if let superview = superview, tmp.maxY != 
       superview.frame.height { 
       tmp.origin.y = superview.frame.height - tmp.height 
      } 

      super.frame = tmp 
     } 
    } 
} 
0
votes
answers
41 views
+10

如何創建帶有Read More/Read Less的段落(標籤中)?

-1

我想在最後創建帶有Read More/Read Less的段落(標籤中)。我是iPhone應用程序開發的初學者。如何創建帶有Read More/Read Less的段落(標籤中)?

這是我的代碼... 我得到在其他條件一個錯誤,錯誤是「類型NSLayoutConstraint價值」沒有成員「字體」」在lbl.contant =的getHeight ....

@IBOutlet weak var lbl: NSLayoutConstraint! 

@IBOutlet weak var btn: UIButton!   

var isLabelAtMaxHeight = false 

@IBAction func ButtonAction(_ sender: Any) { 
    if isLabelAtMaxHeight { 
     btn.setTitle("Read more", for: .normal) 
     isLabelAtMaxHeight = false 
     lbl.constant = 70 
    } 
    else { 
     btn.setTitle("Read less", for: .normal) 
     isLabelAtMaxHeight = true 
     lbl.constant = getHeightOfLabel(text:"Isn't it? How to do? I'm sorry I don't know how to solve this exactly. :(– May Phyu Feb 20 at 11:16 No, i dont mean like that. When you set text to label then U have to find height of label then assign that height to label with setting property number of lines = 0 – Jitendra Modi Feb 20 at 11:31" , width: 
      view.bounds.width, font: lbl.font) 
    } 
} 



func getHeightOfLabel(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 
} 
+0

@IBOutlet weak var btn: UIButton! @IBOutlet weak var yourParagraphLabel: UILabel! @IBOutlet weak var lblHeight: NSLayoutConstraint! var isLabelAtMaxHeight = false @IBAction func btnAction(_ sender: Any) { if isLabelAtMaxHeight { btn.setTitle("Read more", for: .normal) isLabelAtMaxHeight = false lblHeight.constant = 70 } else { btn.setTitle("Read less", for: .normal) isLabelAtMaxHeight = true lblHeight.constant = getHeightOfLabel(text: yourParagraphText, width: view.bounds.width, font: yourParagraphLabel.font) } } 

獲取高度這是過於寬泛,unresearched的堆棧溢出的問題,很遺憾。你會編輯它來顯示你已經嘗試過什麼,以及你有什麼具體問題? – halfer

+0

@ Shaik.Sahilpasha字體:lbl.font是你的錯誤。在這裏給你的標籤名稱 –

+0

lbl是標籤名稱...... –

沙发
0
0
  • 爲您paragraphLabel的高度約束的出口。你的 「更多」 按鈕paragraphLabel。
  • 機頂佈局0

    點擊「Read more」按鈕增加高度約束常數,點擊「Read less」降低高度約束常數。文本

    func getHeightOfLabel(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 
    } 
    
+0

一旦檢查出我的代碼我在ButtonAction其他條件得到一個錯誤.... –

+0

你能解釋更多關於你的代碼嗎?哪一個是你的段落標籤IBoutlet和哪一個你已經採用heightConstraint IBoutlet –

+0

我想你還沒有申報IBOutlet UILabel。您只聲明瞭標籤高度限制。 –

0
votes
answers
64 views
+10

當我在xcode的任何仿真器上運行程序時,尺寸都很好,但是當我在我自己的iPhone上運行時,按鈕位於不同位置

-2

我正在製作計算器應用程序,無法找出可能導致此問題的原因。我有故事板的動態佈局,我可以在Xcode的任何iPhone版本/ iPad版本上運行我的應用程序,並且所有內容都正確佈置。然而,只要我在我自己的iPhone 5上運行它,按鈕就完全不同了,它們會移動,調整大小並且不再有數字。當我在xcode的任何仿真器上運行程序時,尺寸都很好,但是當我在我自己的iPhone上運行時,按鈕位於不同位置

我很困惑,因爲我甚至試圖在iPhone 5s仿真器上運行與我的iPhone相同的ios並且完美地工作。

有什麼我沒有考慮到這裏嗎?

Layout with constraints in xcode

How it appears on my iPhone 5s

+0

請添加模擬器和設備的屏幕截圖。另外,您可以添加約束條件的故事板屏幕截圖。 – Quver

+0

我添加了屏幕截圖,希望這有助於 –

+0

嗯,你可以嘗試清除模擬器,並從iPhone中刪除應用程序並再次測試。如果您仍然看到差異,我會從劃痕再次創建約束。如果你仍然有問題,你可以給我發故事板,我會盡力幫助你。 – Quver

沙发
0
0

有一些合理的解釋:一個是,你必須在你的佈局兩個many限制不能在同一時間內完成,然後很可能是兩個設備會有不同的表現。檢查調試器輸出中的任何相關消息。

您可能有一些代碼檢查它是在真實設備上運行還是在模擬器上運行(我有一些代碼正在運行,但非常非常罕見)。檢查所有這些代碼。

您可能正在訪問構建機器上的數據,而這些數據在設備上運行代碼時並不存在。

除此之外,我想知道發生了什麼。

0
votes
answers
43 views
+10

Swift - 當不同的UITableView單元中的另一個播放按鈕被按下時,如何自動停止當前正在播放的音頻?

1

我是一位快速入門者,目前正在開發我的第一款iOS應用程序。Swift - 當不同的UITableView單元中的另一個播放按鈕被按下時,如何自動停止當前正在播放的音頻?

我有一個TableViewController它有幾個單元格,每個單元格包含一個播放按鈕。當按下幾個播放按鈕時,同時播放幾個不同的音頻,但是當按下另一個播放播放按鈕時,我想要停止正在播放的音頻。

以下是我創建的示例代碼。

請給我一個建議。非常感謝!

ViewController.swift

import UIKit 

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

@IBOutlet weak var tableView: UITableView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
    tableView.dataSource = self 

    tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "cell") 

} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 3 
} 

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    return 88 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 
    return cell 
} 


} 

TableViewCell.swift

import UIKit 
import AVFoundation 

class TableViewCell: UITableViewCell, AVAudioPlayerDelegate { 

var audioPlayer: AVAudioPlayer = AVAudioPlayer() 
var counter = 0 

@IBAction func buttonTapped(_ sender: Any) { 

    // Audio player setting 
    do { 

     audioPlayer = try AVAudioPlayer(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "sample", ofType: "mp3")!)) 
     audioPlayer.delegate = self 
     audioPlayer.prepareToPlay() 

    } catch { 
     print(error) 
    } 

    if counter == 0 { 
     audioPlayer.play() 
     counter = 1 
    } else { 
     audioPlayer.stop() 
     counter = 0 
    } 
} 

} 
沙发
0
0

一種可能的解決方案是創建_currentActivePlayer對象變量。當你開始播放音頻,然後分配給它播放播放器。當其他單元想播放音頻時,檢查該變量,停止播放器並分配新的播放器。

+0

謝謝您的回覆!我試圖創建一個像你在ViewController.swift中建議的對象,但我有一個檢測表視圖單元格中按下哪個播放按鈕的問題。我不確定我是否在正確的道路上。你能否給我更多的線索?先謝謝你。 – coonie

+0

Stackoverflow上有很多問題如何在按鈕處理程序中獲取相應的單元格。我不想複製答案,只需找到解決方案。 – kirander

+0

好的。謝謝! – coonie

0
votes
answers
87 views
+10

視圖沒有越過

-1

我需要設計一個像圓角和陰影一樣的視圖。我有一個容器視圖,裏面有另一個視圖,就像我附加的圖像。但是當我爲外容器視圖應用圓角半徑時,除了具有內部視圖的區域外,半徑已經設置。如果我將它製作成clipToBounds = true,那麼它會遍體鱗傷,但陰影不會到來。所以plz幫助我在這裏。視圖沒有越過

這裏是我的代碼

containerView.layer.masksToBounds = false 
    containerView.layer.shadowColor = UIColor.black.cgColor 
    containerView.layer.shadowOpacity = 0.5 
    containerView.layer.shadowOffset = CGSize(width: -1, height: 1) 
    containerView.layer.shadowRadius = 5 
    containerView.backgroundColor = UIColor.white 
    containerView.layer.cornerRadius = 20 

我附上下面的圖片爲我的問題。 View Image

+0

能否請您分享一些代碼或者即使你的代碼是回購? –

+0

我已經在上面添加了我的代碼。提前感謝 – Hyder

沙发
0
0

你有兩種觀點,超級觀點及其子視圖,與你的目標有衝突。

  • 一方面,您希望超視圖的角半徑影響其子視圖。只有當超級視圖掩蓋其界限時纔會發生這種情況。

  • 另一方面,你想要超級觀點的陰影出現。只有在超級觀點不對其界限掩蓋時纔會發生這種情況。

所以你想要的是邏輯上的不可能性。

該解決方案很簡單。使用三個意見!在兩個視圖之間劃分陰影和裁剪的工作。

  • 最外面的視圖具有拐角半徑和陰影,並且不掩蓋邊界。這是影子製作人。

  • 下一個視圖是它的子視圖。它是完全一樣的大小,並且它也圓角半徑和它確實面具界限。這是快船。

  • 下一個視圖是子視圖的內容,子視圖。它將被第二個視圖遮擋,所以角落的半徑會影響它。

0
votes
answers
36 views
+10

React原生視圖在iPhone Plus上顯示扭曲像素

0

反應原生視圖顯示iPhone Plus版本中的扭曲像素,而同一視圖在iPhone 5,6或7版本上顯示得非常優雅。某些時候的視圖看起來更加糟糕,那麼下面的圖片就是iPhone的加號版本。 enter image description here 代碼如下,React原生視圖在iPhone Plus上顯示扭曲像素

<View style={[styles.headerRow, { paddingHorizontal: 5 }]} > 
    <View style={{ flex: 3, borderColor: theme.color.gray.light, borderRightWidth: .5, alignSelf: 'center' }}> 
     <Text style={[skin.text.smaller, skin.text.bold, { textAlign: 'center', padding: 8 }]}>{'TITLE'}</Text> 
    </View> 
    <View style={{ flex: 2, alignItems: 'center', borderColor: theme.color.gray.light, borderRightWidth: .5, alignSelf: 'center' }}> 
     <Text style={[skin.text.smaller, skin.text.bold, { textAlign: 'center', padding: 8 }]}>{'BUCKIT'}</Text> 
    </View> 
    <View style={{ flex: 2.8, alignItems: 'center' }}> 
     <Text style={[skin.text.smaller, skin.text.bold, { textAlign: 'center', padding: 8 }]}>{'YOUR AVERAGE'}</Text> 
    </View> 
</View> 

使用屏幕寬度DIVID柱代替撓性也不會有幫助。

沙发
0
0

SOLUTION:

我發現一種解決方案,iOS不喜歡設定邊框寬度小於1,從而既可以使用1或更大值或反應天然提供稱爲hairlineWidth StylesSheet變量,其具有設定爲0.3的默認值。您可以通過在組件的構造函數中設置StyleSheet.hairlineWidth = 0.5來更改該值。

<View style={{borderWidth: StyleSheet.hairlineWidth}}> ... </View> 
0
votes
answers
50 views
+10

分享聯繫Via Twillion到iPhone

0

我期待創建一個腳本,將聯繫人從Twillio發送到我的iPhone。目的是我從Twillio發送到手機的聯繫人應該看起來與iPhone共享聯繫人的方式完全一樣。有人可以幫我嗎,分享聯繫Via Twillion到iPhone

PS:它可行嗎?

沙发
0
1

Twilio開發人員在這裏傳播。

這種依賴。聯繫人作爲彩信發送(因爲它是一個信息文件)。 Twilio在美國和加拿大支持sending MMS messages,所以如果您要發送消息的話,您可以這樣做。如果您正在向世界其他地方發送信息,那麼恐怕您無法使用Twilio這樣做,並使其看起來與共享聯繫人相同。

讓我知道這是否有幫助。

+0

嗨philnash,感謝您的反饋,是的,我正在嘗試在美國發送短信。你可以請多指導一下如何發送彩信以及收費是多少等。 –

+0

你可以在這裏看到如何發送短信和彩信的指南:https://www.twilio.com/docs/guides /如何以發送短信的消息,在-PHP#發送-A-消息與媒體-MMS功能於PHP。你可以在這裏看到價格:https://www.twilio.com/sms/pricing – philnash

+0

好的非常感謝你。 –

0
votes
answers
80 views
+10

的UIButton,同時也是UITextField不作爲的UIViewController

0
的一部分

我是新來迅速做出反應,我有這樣的代碼,它是UIViewControllerUITextFieldUIButton的UIButton,同時也是UITextField不作爲的UIViewController

import Foundation 
import UIKit 

class ManualTagController: UIViewController, UIGestureRecognizerDelegate, UITextFieldDelegate { 
    let addTagButton = UIButton() 
    let tagTextfield = UITextField() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.view.backgroundColor = UIColor.white 
     self.view.layer.cornerRadius = self.view.frame.width/80 

     self.addTagButton.setTitle("TAG", for: .normal) 
     self.addTagButton.backgroundColor = UIColor(red: 200.0/255, green: 17.0/255, blue: 57.0/255, alpha: 0.75) 
     self.addTagButton.addTarget(self, action: #selector(addTag), for: .touchUpInside) 
     self.addTagButton.layer.masksToBounds = true 
     self.addTagButton.clipsToBounds = true 
     view.addSubview(addTagButton) 

     self.tagTextfield.placeholder = "# or 'hey siri'" 
     self.tagTextfield.alpha = 1 
     self.tagTextfield.font = UIFont.systemFont(ofSize: 52) 
     self.tagTextfield.borderStyle = UITextBorderStyle.roundedRect 
     self.tagTextfield.autocorrectionType = UITextAutocorrectionType.no 
     self.tagTextfield.keyboardType = UIKeyboardType.default 
     self.tagTextfield.returnKeyType = UIReturnKeyType.done 
     self.tagTextfield.clearButtonMode = UITextFieldViewMode.whileEditing; 
     self.tagTextfield.contentVerticalAlignment = UIControlContentVerticalAlignment.center 
     self.tagTextfield.delegate = self 
     view.addSubview(tagTextfield) 
    } 

    override func viewDidLayoutSubviews() { 
     self.addTagButton.frame = CGRect(x: 10.0, y: self.view.frame.height - 77.0, width: self.view.frame.width - 20.0, height:72.0) 
     self.addTagButton.layer.cornerRadius = self.addTagButton.frame.width/80 
     self.tagTextfield.frame = CGRect(x: 10.0, y: 5.0, width: self.view.frame.width - 20.0, height:72.0) 
    } 

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

    @objc private func addTag() { 
     //Database service code here... 
     print("in addTag .........") 
     //This will go where service is done and it is successful 
    } 

    internal func textFieldDidBeginEditing(_ textField: UITextField) { //delegate method 
     // 
    } 

    internal func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { //delegate method 
     return false 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool { //delegate method 
     textField.resignFirstResponder() 

     return true 
    } 
} 

在我的主要UIViewController - 它被加載像這樣,點擊按鈕。它被裝精 - 我只是展示瞭如何我在這裏做layer,以及它是如何初始化:

@objc private func openManualTag() { 
     let frameHeightAdjusted = self.view.frame.height - 5/8 * self.view.frame.height 
     let manualTag = ManualTagController() 
     manualTag.view.layer.shadowColor = UIColor.black.cgColor 
     manualTag.view.layer.shadowOpacity = 0.3 
     manualTag.view.layer.shadowOffset = CGSize.zero 
     manualTag.view.layer.shadowRadius = 5 
     manualTag.view.layer.masksToBounds = true 
     manualTag.view.clipsToBounds = false 
     manualTag.view.layer.shadowPath = UIBezierPath(rect: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 159)).cgPath 
     manualTag.view.tag = 1 
     manualTag.view.frame = CGRect(x: 0, y: frameHeightAdjusted, width: self.view.frame.width, height: 159.0) 
     manualTag.view.transform = CGAffineTransform(translationX: 0, y: -frameHeightAdjusted - 159) 

     DispatchQueue.main.async { 
      self.view.addSubview(manualTag.view) 
      UIView.animate(withDuration: 0.5, animations: { 
       manualTag.view.transform = .identity 
      }) 
     } 
    } 

的問題既不是UIButton也不UITextField將工作......既不是竊聽他們作出迴應無論如何。我究竟做錯了什麼?

UPDATE

發佈所有的ViewController,我的主視圖控制器,只是櫃面:

import UIKit 
import GoogleMaps 


class ViewController: UIViewController, CLLocationManagerDelegate { 
    let locationManager = CLLocationManager() 
    var center = CLLocationCoordinate2D() 
    let tagButton = TagButton() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.tagButton.addTarget(self, action: #selector(openManualTag), for: .touchUpInside) 
     self.tagButton.backgroundColor = UIColor(red: 200.0/255, green: 17.0/255, blue: 57.0/255, alpha: 0.5) 
     self.tagButton.layer.shadowColor = UIColor.black.cgColor 
     self.tagButton.layer.shadowPath = UIBezierPath(roundedRect: self.tagButton.bounds, cornerRadius: self.tagButton.frame.width/2).cgPath 
     self.tagButton.layer.shadowOffset = CGSize.zero 
     self.tagButton.layer.shadowOpacity = 0.3 
     self.tagButton.layer.shadowRadius = 5 
     self.tagButton.layer.masksToBounds = true 
     self.tagButton.clipsToBounds = false 
     self.tagButton.layer.borderWidth = 5 
     self.tagButton.layer.borderColor = UIColor.white.cgColor 
     view.addSubview(self.tagButton); 
    } 

    override func viewDidLayoutSubviews() { 
     //let tagButton = view.viewWithTag(0) 
     self.tagButton.frame = CGRect(x: self.view.frame.width/2 - 36, y: self.view.frame.height - 0.2 * self.view.frame.height, width: 72.0, height: 72.0) 
    } 

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

    override func loadView() { 
     let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0) 
     let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 
     view = mapView 
    } 

    func addMarker(tag: String) { 
     self.locationManager.startUpdatingLocation(); 
     let marker = GMSMarker() 
     marker.position = CLLocationCoordinate2D(latitude: self.center.latitude, longitude: self.center.longitude) 
     marker.title = tag 
     //marker.snippet = //USERNAME 
     DispatchQueue.main.async { 
      marker.map = self.view as? GMSMapView 
     } 
    } 

    @objc private func openManualTag() { 
     let frameHeightAdjusted = self.view.frame.height - 5/8 * self.view.frame.height 
     let manualTag = ManualTagController() 
     manualTag.view.layer.shadowColor = UIColor.black.cgColor 
     manualTag.view.layer.shadowOpacity = 0.3 
     manualTag.view.layer.shadowOffset = CGSize.zero 
     manualTag.view.layer.shadowRadius = 5 
     manualTag.view.layer.masksToBounds = true 
     manualTag.view.clipsToBounds = false 
     manualTag.view.layer.shadowPath = UIBezierPath(rect: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 159)).cgPath 
     manualTag.view.tag = 1 
     manualTag.view.frame = CGRect(x: 0, y: frameHeightAdjusted, width: self.view.frame.width, height: 159.0) 
     manualTag.view.transform = CGAffineTransform(translationX: 0, y: -frameHeightAdjusted - 159) 

     let transparencyButton = UIButton(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)) 
     transparencyButton.backgroundColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha:0.4); 
     transparencyButton.addTarget(self, action: #selector(dismissHelper(sender:)), for: .touchUpInside) 

     DispatchQueue.main.async { 
      self.addChildViewController(manualTag) 
      self.view.addSubview(manualTag.view) 
      manualTag.didMove(toParentViewController: self) 

      UIView.animate(withDuration: 0.5, animations: { 
       manualTag.view.transform = .identity 
      }) 

      self.view.insertSubview(transparencyButton, belowSubview: manualTag.view) 
     } 
    } 

    @objc func dismissHelper(sender: UIButton) 
    { 
     self.view.viewWithTag(1)?.removeFromSuperview() 
     sender.isHidden = true; 
    } 

    override func viewDidAppear(_ animated: Bool) { 
     self.locationManager.delegate = self 
     self.locationManager.requestWhenInUseAuthorization() 
     self.locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     self.locationManager.startUpdatingLocation() 
    } 

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { 
     print("Error" + error.localizedDescription) 
    } 

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     let userLocation = locations.last 
     self.center = CLLocationCoordinate2D(latitude: userLocation!.coordinate.latitude, longitude: userLocation!.coordinate.longitude) 

     let mapView = view as! GMSMapView 
     DispatchQueue.main.async { 
      mapView.camera = GMSCameraPosition.camera(withLatitude: self.center.latitude, longitude: self.center.longitude, zoom: 14.0) 
     } 

     print("Latitude :- (userLocation!.coordinate.latitude)") 
     print("Longitude :-(userLocation!.coordinate.longitude)") 

     self.locationManager.stopUpdatingLocation() 
    } 
} 
+0

是否將'isUserInteractionEnabled'屬性設置爲true? – Xcoder

+0

謝謝,但它並沒有幫助 – ewizard

+0

當它打開時,屏幕響應我手動標記視圖外的水龍頭 – ewizard

沙发
0
1

當你添加一些其他的視圖控制器的視圖到當前的VC,你必須首先添加將控制器視爲您當前的控制器。這樣的UIKit將提供全觸控以及其他VC相關事件正確子視圖控制器:

DispatchQueue.main.async { 
    self.addChildViewController(manualTag) 
    self.view.addSubview(manualTag.view) 
    manualTag.didMove(toParentViewController: self) 

    UIView.animate(withDuration: 0.5, animations: { 
     manualTag.view.transform = .identity 
    }) 
} 

此外,我不建議你修改一個UIViewController的「視圖」屬性。這可能會導致不同的問題,例如不響應您的UITextField或Autolayout崩潰。只需添加您的地圖爲全屏幕子視圖中viewDidLoad方法:

super.viewDidLoad() 

let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0) 
let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 
mapView.frame = view.bounds 
view.addSubview(mapView) 

而且不要忘記刪除你的loadView硬道理()方法!

+0

謝謝!解決了manualTag ....上的按鈕,但UITextField仍然沒有響應 – ewizard

+0

,因此UITextField委託方法沒有被調用,對吧? –

+0

鍵盤永不出現...生病記錄方法 – ewizard

0
votes
answers
41 views
+10

如何使用Swift 3.0播放附加到Image Array的聲音?

0

是否有可能發揮時,圖像-5被稱爲在下面的圖像陣列如何使用Swift 3.0播放附加到Image Array的聲音?

下面是完整的代碼,包括建立AVAudioPlayer

ImageArray和你建議的代碼聲音:

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 

    var player:AVAudioPlayer = AVAudioPlayer() 

    @IBOutlet weak var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad()  

    var imagesName = ["Image-1.png","Image-2.png","Image-3.png","Image-4.png","Image-5.png","Image-6.png","Image-7.png","Image-8.png","Image-9.png","Image-10.png"] 

      var images = [UIImage]() 

      for i in 0..<imagesName.count{ 

       images.append(UIImage(named: imagesName[i])!) 

      } 

      imageView.animationImages = images 
      imageView.animationDuration = 0.5 
      imageView.animationRepeatCount = 1 
      imageView.startAnimating() 

      do 
    { 
     let audioPath = Bundle.main.path(forResource: "song", ofType: "mp3") 
     try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL) 
    } 
    catch 
    { 
     //ERROR 
    } 

    let whichImage: Int = 5 
    let when = DispatchTime.now() + imageView.animationDuration * TimeInterval(whichImage-1) 
    DispatchQueue.main.asyncAfter(deadline: when) { 
     self.player.play() 
     // Play sound here 
    } 
沙发
0
0

正如你間隔是固定的,你還挺已經知道當圖像-5將被解僱,那麼試試這個:

let whichImage: Int = 5 
let when = DispatchTime.now() + imageView.animationDuration * TimeInterval(whichImage-1) 
DispatchQueue.main.asyncAfter(deadline: when) { 
    // Play sound here 
} 
+0

嗨 - 感謝FO請幫忙。我已經更新了完整的代碼上面的,但是在顯示圖片-5 Song.mp3的不火 - 這將觸發動畫您使用的每幅圖像0.5秒所以延遲應爲2.5秒完成 –

+0

幾秒鐘後,不是5秒。然而聲音播放開始可能與顯示圖像不完全同步。 –

+0

喜魯斯蘭Serebriakov - 我已經嘗試了您的推薦代碼(請參見上文),但它看起來像有2-3秒的延遲,你播放音頻文件與AVAudioPlayer第一次,你有什麼更多的想法? –