free style

webプログラマなりて5年程 まだまだ足りてない部分を日々補いつつ突っ走る。

【swift】background処理

以前作ったタイマーはバックグラウンド状態になると、
通知も音楽も鳴らせない。
そもそもバックグラウンドに入ると処理が止まってしまう。

そこで行った作業は
1、プロジェクトを選択
2、targetを選択
3、Capabilitiesを選択
4、Background Modesを[ON]
5、Background fetchを選択

<div align="center"><a href="http://livedoor.blogimg.jp/takasea007/imgs/8/4/849aaf93.png" title="41" target="_blank"><img src="http://livedoor.blogimg.jp/takasea007/imgs/8/4/849aaf93-s.png" width="480" height="361" border="0" alt="41" hspace="5" class="pict" /></a></div>

するとどういうことでしょう。
バックグラウンドでも時間は進むではありませんか。

しかし、やはりそのままではアラート通知も音も出せない状態。。。

AppDelegate側にViewControllerを呼び出して、カウント数を取り出すも、
定期的な処理は行えず、、、
ならばバックグラウンドに入ったらそこでもtimerを発動させようと
やってみるも、だめ。。。


どうすればいいのでしょうかね。
今最大の課題です。

追記
background fetchで確かにカウントは進みますが、
最大180秒のようで、そこでパタリと止まります。
振り出しに戻るかカップ麺タイマー(3分限定)になっちゃいますね。

【swift】カウントアップ+アニメーションのようなもの

今回は単にカウントアップするだけでは物足りないので、
1秒ごとにLabelを表示してカウントアップを、数字以外で表現してみました。

ただLabelが配列にどうやっても入れられず、、、
個数分のLabelを作る事に、
Startを押すと、タイマーが開始します。
Clearはタイマーは止まらずに、数値だけがクリアされます。
STOPはそのまま、タイマーを止め、初期値に戻します。


画面がこちら
38
カウントアップしてますね
11
Labelもちゃんと動いていますね
19
ソースはこちら
無駄に長くなってしまった感が否めない。。。
どうやればLabelを複数扱うときの配列なりの処理ができるんだろう
今の課題です

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var subView: UIView!
    var timer:NSTimer = NSTimer()
    var count:Int = 0
    var time : Int = 0
    var labelcount:Int = 1
    var xcount: CGFloat = 0.0

    var Label1:UILabel = UILabel()
    var Label2:UILabel = UILabel()
    var Label3:UILabel = UILabel()
    var Label4:UILabel = UILabel()
    var Label5:UILabel = UILabel()
    var Label6:UILabel = UILabel()
    var Label7:UILabel = UILabel()
    var Label8:UILabel = UILabel()
    var Label9:UILabel = UILabel()
    var xx : CGFloat = 25.5
    var y:CGFloat = 240.0
    
    @IBOutlet weak var subLabel: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    @IBAction func AnyButtonAction(sender: UIButton){
        
        switch  sender.titleLabel!.text! {
        case "Start":
            timer = NSTimer.scheduledTimerWithTimeInterval(
                0.5,
                target: self,
                selector: Selector("timerCount"),
                userInfo: nil,
                repeats: true)
            subView.backgroundColor = UIColor(colorLiteralRed: 0.0, green: 0.0, blue: 0.8, alpha: 1)
            break
        case "Clear":
            initFunc()
            clearLabel()
            subView.backgroundColor = UIColor(colorLiteralRed: 0.0, green: 0.0, blue: 0.8, alpha: 1)
            break
        case "STOP":
            timer.invalidate()
            initFunc()
            clearLabel()
            subView.backgroundColor = UIColor(colorLiteralRed: 1.0, green: 1.0, blue: 1.0, alpha: 1)
            break
        default:
            break
        }
    }
    
    func initFunc(){
        subLabel.text = "00:00"
        count = 0
        time = 0
        xcount = 0
    }
    
    func clearLabel(){
        Label1.hidden = true
        Label2.hidden = true
        Label3.hidden = true
        Label4.hidden = true
        Label5.hidden = true
        Label6.hidden = true
        Label7.hidden = true
        Label8.hidden = true
        Label9.hidden = true
    }
    func timerCount(){

        xcount++
        if count < 59 {
            count++
        }else{
            count = 0
            time++
        }
            subLabel.text = String(format: "%02d:%02d", time,count)
        switch count % 10 {
        case 0:
            xcount = 0
            clearLabel()
        case 1:
            Label1 = makeLabel(xcount * xx, y: y)
            self.view.addSubview(Label1)
        case 2:
            Label2 = makeLabel(xcount * xx, y: y)
            self.view.addSubview(Label2)
        case 3:
            Label3 = makeLabel(xcount * xx, y: y)
            self.view.addSubview(Label3)
        case 4:
            Label4 = makeLabel(xcount * xx, y: y)
            self.view.addSubview(Label4)
        case 5:
            Label5 = makeLabel(xcount * xx, y: y)
            self.view.addSubview(Label5)
        case 6:
            Label6 = makeLabel(xcount * xx, y: y)
            self.view.addSubview(Label6)
        case 7:
            Label7 = makeLabel(xcount * xx, y: y)
            self.view.addSubview(Label7)
        case 8:
            Label8 = makeLabel(xcount * xx, y: y)
            self.view.addSubview(Label8)
        case 9:
            Label9 = makeLabel(xcount * xx, y: y)
            self.view.addSubview(Label9)
        default:
            break
        }
        print (count % 10 )
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

【swift】画面間での値の受け渡し

設定画面で写真や色を選択したら、
メイン画面に反映させたい!

参考にしたページ
http://smileapps.sakura.ne.jp/blg/?p=933
ViewContoller
import UIKit
class ViewController: UIViewController,
UINavigationControllerDelegate,
    UIImagePickerControllerDelegate{
    @IBOutlet weak var testLabel: UILabel!
    @IBOutlet weak var ImageView: UIImageView!
    @IBOutlet weak var RLabel: UILabel!
    @IBOutlet weak var GLabel: UILabel!
    @IBOutlet weak var BLabel: UILabel!

    var R:Float = 0.0
    var G:Float = 0.0
    var B:Float = 0.0
    
    var RR :Float = 0.0
    var GG :Float = 0.0
    var BB :Float = 0.0
    
    // NSUserDefaults のインスタンス取得
    let NUD = NSUserDefaults.standardUserDefaults()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        R = RR
        G = GG
        B = BB

        testLabel.textColor = UIColor(colorLiteralRed: R, green: G, blue: B, alpha: 1)
        // Do any additional setup after loading the view, typically from a nib.
    }
    override func prepareForSegue(segue:UIStoryboardSegue , sender: AnyObject!){
        var SegueView = segue.destinationViewController as! ConfigViewController
        SegueView.RR = R
        SegueView.GG = G
        SegueView.BB = B
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any re>
sources that can be recreated.
    }

}
prepareForSegueというのが必要だったみたいですね。 phpでいうとこのsessionのような動きなのかな?
この後Imageデータも引き渡す所まで進み、
痛っタイマー少しだけ進化しました。
swift奥が深く広さもありありで難しいですが、動くとうれしいね。
webシステムとは違うからねえ

【swift】痛いタイマーを作ろう

swiftタイマーのアプリを好きな画像を背景にして痛仕様にしよう!

という事で今回もまたタイマーネタです。

前回のタイマーは3分固定でしたが、
今回は時間選択式

基本画面
14


左からタイマーのSTART、写真選択、写真選択解除、タイマーのSTOP

写真選択画面
29


実際に写真を選択した場合
33


写真がスクエアなどなった場合まだ確認中です。
レイアウトは崩れないけど、変に伸びたりするのかなあ


最初画像選択したら、ボタン類が見えなくあって焦りました。
imageViewの配置を一番下?にすることで解決しました。

そして、STARTを押したら
38


datePikerの表示からLabel表示に切り替わり、カウントダウンしていく。。。
というまあシンプルな作りです。

あ、あとDatePikerの初期値を0時1分にしたかったので、
どこで設定するんだろ。と思ったら
DatePikerのDateがCurrentDateになっていたので、Customに変え
2123年1月1日 0時1分とかに変更でなんとかなりました。
もっとスマートな方法があればお教えいただけると幸いです><b

痛いタイマーという事で僕の画像はもれなくでんぱ組になります。

【swift】3分タイマーを作ろう

3分カウンターを作ろう

殆どカップ麺を食べない私ですが、NSTimerで3分タイマーを作ってみました。

タイマーとしては後はボタン音や完了した際に音が出せたらいいなあ。。。

まだiosでの音の出し方まで至っていないので、勉強中ということで

54
01
16
08
楽天市場
ギャラリー
  • 【swift】カウントアップ+アニメーションのようなもの
  • 【swift】カウントアップ+アニメーションのようなもの
  • 【swift】カウントアップ+アニメーションのようなもの
  • 【swift】痛いタイマーを作ろう
  • 【swift】痛いタイマーを作ろう
  • 【swift】痛いタイマーを作ろう
  • 【swift】痛いタイマーを作ろう
  • 【swift】3分タイマーを作ろう
  • 【swift】3分タイマーを作ろう
  • ライブドアブログ