[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad] [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
iPhone, iPod touch用アプリケーションの開発を始めたばかりの初心者向け質問スレ。
■質問する前に■
1. 質問は日本語もしくはObjective-C/Swiftで
質問に質問で返されても逆切れしない。それは質問の仕方が悪いってことだってばよ。
2. どういう内容であれレスをもらったら報告とお礼の言葉を忘れずに。
回答者は自分の時間を使って親切で回答してくれています。
3. 回答者は自分も初心者であった事を忘れずに。
4. マルチポスト(複数のスレに同じ質問を書込むこと)は厳禁!
5. 質問は可能な限り具体的に。
ただ「エラーが出ます」ではエスパーかスタンド使いでなければ答えられません。
エラー内容をちゃんと書きましょう。
6. わからない部分のコードをコピペすると手っ取り早いです。
7. このスレは無料プログラミング教室ではありません。
「○○の仕方を教えてください」という質問はなるべく避けてください。
「自分で調べたけどわからなかった事」を質問するというスタンスを忘れずに。
8. バグを安易にOSや開発環境のせいにしない。
自分の知識の無さを棚に上げて人のせいにするなんて百年早い。
9. 質問する前にもう一度よく考えてから質問しよう。 もいっこナビゲーションコントローラー挟まないとナビゲーションバーでなくて困った autolayout自分は使わないな
viewWillLayoutSubviewsとかで手動でframeの位置設定してる
その方が自分には分かりやすいし、メンテも楽だから
無理にautolayout使う必要無いぞ UINavBarのLarge TitleかつBar Button Item無しのときの見た目ヤバすぎない シミュレータってOpenGL ES 2.0まともに動かない?
テクスチャがぐちゃぐちゃなんだが。
テクスチャ生成時にmemsetでゼロで埋めても変わらない。
実機だと問題なく表示される。 >>626
デカい点をGL_POINTで描画したときぐちゃぐちゃな描画になったわ
信用できない印象がある 現在、appStoreのアプリ名やスクショや説明文を更新するには
新規バージョンのリリースが必要なようですが
そのために新規ビルドも必要なのはどうにもならないのでしょうか?
変更ないのに新規ビルドしてアップロードとか非効率極まりない… なぜ前回の更新時にアプリ名やスクショや説明を更新しておかなかったのか全く理解できない
ゴミ開発者が自分のゴミブログ感覚でロクにチェックも更正もせずにアップしてるだけにしか見えない 皆さんはダウンロード状況とか見て
スクショ変えてのABテストとかやらないんですか?? >>631
>ダウンロード状況とか見て
そういう提供者都合での行き過ぎで、また、簡単にアホが出てきてしまったから いや、別にいちゃもんじゃないぞ。いちおう
実際にアホがアホやるまでは、スクショの変更や説明なんぞほぼノーチェックだったからな
アホといっても、愉快犯とかでもなく、いかにダウンロードしてもらうか/させるか=いかに金儲けるかというのでの、顕著なアホ
まあ、有象無象に紛れるのは拭えないが、そんなのでなく良いアプリを開発/アップデートするのに注力した方がいいというお達しwだと思えばいいんじゃね その執拗な罵倒が要らない
スクショや説明文もバイナリと一体で審査するから勝手なタイミングで更新すんなってだけだろ どこぞの誰か(このスレでも特定の誰かでもない)やらかしたヤツに対してだがな
まあ心当たりあるのなら気にするヤツがいるかもしれんがなwwそんなの想定してないわ
まあ、いちゃもんでないのは理解したみたいだからいいけど、まあ、なんかすまん てか、お前は元レスにレスすればええんのとちゃうか?
ちゃんと意味汲み取ってのお前の前レスだろ?それも元レスに直接ではなく俺のレスに対してでお前は俺の元々レスの意味理解してるじゃん
お前は何をしたいんだ?いちゃもんつけたいんか?ww スクショや説明文もバイナリと一体で審査するから勝手なタイミングで更新すんなってだけ
簡潔に現状を言うとそう。バックグラウンドとして俺の言うってことね。流れからは別のバックグラウンドを ID:FzBbnwrY0 があるとしてるとは思ってないw言わないから。そういうことで「俺の元々レスの意味理解して」ね。いちおう スクショや説明文も審査されるのはまあ分かるけど、新規バージョンを作成した際に過去にリリース済のバイナリを使えない、
つまり変更なしのバイナリをバージョン番号あげて再アップしなければいけないというのが、天下のアップル様にしてはあまりにもイケてない仕様なので、もっと良いやり方があるのかなと思って質問してみました。
ちょっと前まで審査いらなかったから、その辺を考慮せずに単純に審査必須にしたせいで不恰好な仕様になってる気がしてます。 内容(バイナリ)も変わってないのにスクショや説明文のような見た目だけ変えるとか
もはやアプリのクオリティで勝負できないゴミグラマの所業
そんなゴミアプリはAppストアには不要 メタデータとバイナリ含めて一つのアプリって考えなんだからどちらか変更する際は新しいバージョンで審査に出せってことでしょ
バージョンだけあげて中身一緒だったとしても、その時点での基準で審査し直すからリジェクトされることだってあるし、改めてその時点での審査基準でし直すから全て出し直しっていうのはおかしくないと思うけどな
場合によっては、最新の環境では手直ししないといけないこともあるし、新しいバージョンのたびに一律にビルドし直させるのは理にかなってると思う 請負アプリ開発だと、お客さんの都合でバイナリ(アプリ)の動作自体の審査は早めに済ませたいけど、メタデータに関してはお客さんがギリギリまで修正したいみたいなことがあるから、
新しいビルドを要求されるのはちょっと嫌だなぁと思ったりとか。まぁ今後は早めにくださいって言うだけなんだけどね。ただアプリの実装とメタデータの手配を両方同時期にやらなきゃいけないんで
負荷はかかるかな。 メタデータとスクショを審査通した後で、スパム的に書き換える開発者が続出していたから、
こういう事態になったんだよ
数年前、スクショは審査時のみ変更できるようになって、
今回はメタデータも審査時のみ変更できるよう変わったってこと 以下はダウンロードした html から正規表現でデータを抜き出すコードの一部です。
receiveItem(" の直後のデータを抜き出しています。
コメントアウトした patan はエラーが出てビルドできません。
なんでバックスラッシュ一つのエスケープでうまくいくのかわかりません。
// let patan = "receiveItem(""
// let patan = "receiveItem\\(\\""
// let patan = "receiveItem\\("
let patan = "receiveItem\\(\""
let regex = try! NSRegularExpression(pattern: patan, options: [])
let matches = regex.matches(in: gameHtmlStr, options: [], range: NSRange(location: 0, length: gameHtmlStr.characters.count))
-----
receiveItem("
この部分の末尾のダブルクオートのエスケープにバックスラッシュ2ついるように思えるのですが、それだと赤いエラーがでてビルドできません。 エスケープを処理するやつがコンパイラと正規表現の2回通るからね patanをprintしてみりゃわかるけど、それに必要な正規表現は
receiveItem\("
なので、リテラルとしてエスケープすると
receiveItem\\(\"
になる >>649 >>650
レスどうもです。だいたいわかりました。
let patan = "receiveItem\\(\\""
これだとダブルクオートが3つ存在して、エラーなんですね。クオートが並んでたら見にくいので \Q みたいなの使うのも良いかと思いました。 swift で文字列検索して抜き出すベストプラクティスはなんなのでしょうか?
myString.index(myString.index(of : "receiveItem()"), offsetBy:13)
こんな感じで検索して抜き出そうとしたらうまくいかず。
(of: のとこに文字列を指定できない。キャラクターのみ指定可能。)
NSRegularExpression を使って抜き出したのですが、下記のような処理手順がめんどくさすぎて頭が沸騰しちゃいそうです。
1. NSRegularExpression でマッチした検索結果オブジェクトの配列を取得
2. 1. から NSRange 取得
3. 2. の NSRange を swift の range に変換。
4. 3. を使い substring 取得
5. 4. を String に変換 >>652
NSStringに変換して、range(of: String)を使ったほうが良さそう Xcode9.0 言語はSwift3
端末はiphone7 plusのiOS11で
サーバ側はAPNS_PHPにてプッシュ通知を行っています。
この状況でsilentプッシュがデバッグ接続してるときだけしかこなくて困ってるんですけど、
同じような現象で解決策知ってる方いらっしゃいませんか。
なお、おなじコードでiOS10のiPhoneでは呼ばれております。
https://stackoverflow.com/questions/44796613/silent-pushes-not-delivered-to-the-app-on-ios-11
英語には弱いもので解決策を見落としていたらすいません。
解決策などご存知でしたら情報お願い致します。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
let ud = UserDefaults.standard
if ud.object(forKey: "lastCallSilent") != nil{
print("silent:\(String(describing: ud.object(forKey: "lastCallSilent")))")
}
let now = Date()
let formatter = DateFormatter()
formatter.dateFormat = "[yyyy/MM/dd HH:mm:ss]"
let dateStr : String = formatter.string(from: now)
ud.setValue(dateStr, forKey: "lastCallSilent")
}
として、アプリが立ち上がった後にも
if ud.object(forKey: "lastCallSilent") != nil{
print("silent:\(String(describing: ud.object(forKey: "lastCallSilent")))")
}
としてますが、 iphone11だけデバッグ接続しているときだけしか値が入ってきません。 'Could not find a storyboard named 'Main' in bundle NSBundleとか出て落ちる
意味不明
本当にXCode作ってる奴は頭悪いんだろうな
そりゃAppleもXCode縛りするはずだわ
だってこんなゴミは縛られないと誰も使わない
XCode作ってる奴はマジで頭悪いんだろう >Could not find a storyboard named 'Main' in bundle NSBundle
って、まんまじゃん。んー、それがわからないのが頭悪いとか言ってもw
まんま、そういうことだよ。そういうことになる周りを見てみよう。賢かったすぐわかる まあXcodeのエラーメッセージは総じてわかりづらいけどな >>655
えいごがわからないのかもしれないけれど
それわにほんごでいうと
「NSBundleに“Main”という名前のストーリーボードが見つかりません」
とかいてあるのですよ。 正確にはNSBundleの後に実アプリケーションバンドルのパスが付く
bundle NSBundle だけ/NSBundleに だと、「ん?」という語だが。まあ「ん?」でもわかるわな アプリ起動時にストーリーボードがうまく巻き込まれてないから、Main.storyboad があるかチェックする。
めちゃめちゃ分かりやすいエラーメッセージじゃん。 頭悪い奴が本当に多いな
エラーの内容が分からないとでも思ってるのか?
Main.storyboardが存在しているのにも関わらず上記エラーが出るから意味不明なんだが
存在しているし再設定等も試したうえでなお上記エラーが出るから意味不明なんだが
検索して解決策と称される対応方法をいくつか試したが解決せず
このエラー程度も読めない奴が開発してると思ってる辺り頭悪い奴が多いみたいだな
確かに俺の書いた情報は少なかったが、情報が不足する場合は自分のレベルを基準に補って考えるのが人間の思考パターン
その基準に合わせて出たのがここ数レスの頭悪い書き込み
Clean後1発目にビルドしたやつは落ちないことを確認したが
ビルドのたびにクリーンするのもダルいから
最終的にストーリーボード使わない方向で解決したわ storyboardがどうやって実体化されるか理解してないから分からんのだろ
名前の文字列で解決しようとする類はそういうエラーメッセージになるのは仕方がない IphoneXに未対応の既存アプリは自動的に黒帯が入るらしいですが、
Xcode9でbuildしたアプリでも同様に黒帯を入れることは可能でしょうか?
試しにXcode9でbuildしたらフルスクリーンで表示されてしまいましたが、しばらく対応が難しいのでシステムに自動で黒帯をつけてもらいたいんです 本当に自動的に黒帯が入るかは、実機でないとわからない HIGに黒帯入れるなって書いてるから出来てもダメじゃね iPhoneアプリがRejectされました。
理由はiPadで正常表示されないとのことで、その画像も添付されてたんですが、
なぜか自分のシミュレーターではiPadも問題なく表示されています。
こういう場合はどうすべきですか? >>670
ありがとうございます。
画像送ってみます。 シミュレータと実機では動作が異なることがある。
Appleは実機で審査している
この場合、シミュレータではうまく行ったから〜云々の弁明は通用しない
実機でテストやれ
実機がないなら買え >>669
>>672が言ってる通りだが、画像送ったって向こうの実機のスクショ送られてきて実機で確認してみろって言われて終わり
以前実際そう言われたから、最低限確認が必要なものは全部実機で確認してるw OpenInで他のアプリから受け取ったファイルの場所が
ios11のiphoneだとtmpフォルダ内に変わってるけど仕様?
iPadだと依然としてDocuments/Inboxフォルダにコピーされる 動作確認用の実機すら買えない貧乏人は開発しなくていいよ openURLって来てんだから、さっさと開いて所定の場所に保存するもんじゃないの?
制限があるからInBoxも一時的という意味だと思うけど
単に受け渡し窓口じゃね。あー、ファイルサーバーやメーラーでもInBoxにやたら溜め込むっていう人もいるか、それは違うと言いたい。関係ないけどw 画面遷移するたびに広告読み込まれるの防ぐにはどうすべきですか?
毎度loadされて使用メモリ量がどんどん増えていく。。 iPhoneXて横向きの時にstatus barを表示できない仕様になってるんでしょうか?
シミュレータで試してるけど横向きだと表示されません iOS11対応というのは、Xcode9でコンパイルすればそれだけでオッケーですか?無理にSwift4にコンバートする必要はないですよね? 各画面でviewdidloadでrequestをloadしてます。
広告idは同じものを使ってます。 676だけどOpenInのバグ、iOS11.0.2で直ったみたい >>688
新しく広告をリクエストしないで前の画面の広告を次の画面に表示すりゃ良いんじゃないの? var sourceStr = "前後に不要な文字https://yahoo.jp/games/some?yh=1抜き出せるかな?yh=1"
// 2. URL文字列抜き出し。
// let gameURLPattern = "(https://yahoo.jp).+(yh=1)" // greedy
let gameURLPattern = "(https://yahoo.jp).*?(yh=1)"
正規表現によるとあるサイトのURL文字列の抜き出しコードの一部です。
下のパターンを使うとなぜうまくいくのでしょうか?
コメントアウトしてるのが最初に自分で書いてうまくいかなかったパターンです。
https://yahoo.jp/games/some?yh=1 にマッチさせたい。
https://yahoo.jp/games/some?yh=1抜き出せるかな?yh=1
しかし、これがマッチする。
nsregularexpression non greedy で検索するとスタックオーバーフローの良記事がヒットし問題はすぐ解決したのですが、なぜうまくいくかよくわかりません。 >>691
正規表現の基本の話になるが、*や+は最長一致になる。だから、上の正規表現だと.+部分が"/games/some?yh=1抜き出せるかな?"になる
一方、*?や+?は最短一致になるので、.*?部分が"/games/some?"になる >>690
そのようなことが可能なんですか?
できれば軽くでもいいのでやり方を教えてもらいたいです。 >>693
画面遷移するときに、admobのviewを前の画面のviewからremoveFromSuperviewして、次の画面のviewにaddSubviewすれば、次の画面に持っていけない?
画面が戻るときに、そのviewも戻す必要があるから面倒だけど >>692
ありがとうございます。勉強になりました。
最短一致とかどっかで読だはずだけど、あまり身についていませんでした。
サンプル集めて、調べてみます。 >>694
回答ありがとうございます。
色々思考錯誤してますが、まだできてません。
具体的には次のようにしてます。
let first = firstViewController()
var admain = first.adview
self.view.addSubview(admain!)
ここでadmain が nil になってしまいます。 >>696
それだとfirstViewControllerを新しく作ってない?
画面遷移時に何かの値を渡すのと同じように、adviewも次の画面のViewControllerに渡してみたら? >>697
できました!!!
ありがとうございます!!(^^) Admob動画リワードって再生されただけじゃ収益化されないんですか? Macbook 2017 で意外とサクサクビルドできて、Macbook pro ドヤ捨てそうになったけど、realm 入れたらビルド遅すぎてびっくりした。 こんにちはstoryboard(xcode9 swift3)で質問です
UIViewの中に水平に並んだUILabelが三つあります
【[山田太郎][三年生][4月生まれ]】
現在width制約は無しでleadingとtrailingはそれぞれの始終端に繋がっています
【[山田太郎][三年生 ][4月生まれ]】のように
左のラベルは文字を全て表示、右のラベルも文字を全て表示
真ん中のラベルは残りの幅を全て占有する
というレイアウトの設定を目指しています
Androidで言えば幅が [wrap_content][0dp / weight="1"][wrap_content]となります
iOSで同様のレイアウトを表現する方法が思いつきませんでした
よろしくお願いします >>526-529
525ですがありがとうございます。
今も懲りずに本で勉強してますが(iPhoneアプリ開発講座ーはじめてのSwift SBクリエイティブ)どんなアプリ開発だろうが先ずはこれ位完全に覚えないといけないんですよね? 先月Macを買ったのでせっかくだしアプリつくってみようかなとおもいました。
本読んで勉強しようと思っていますがなにかおすすめの本ありますか? 1. 公式マニュアル
2. iOS Programming: The Big Nerd Ranch Guide (6th Edition)
3. Programming iOS 10 by Matt Neuburg AppPreviewのビデオが自動再生される条件について教えて下さい。
AppPreview用のビデオを登録しそのアプリの紹介画面ではビデオが再生されるようになりました。
ところが他のアプリは例えば検索結果の一覧画面で画面内に表示されるだけで再生が自動的に始まるのですが、私のアプリはアプリのページを開かないと再生されません。
(いわゆるポスターフレームも表示されません)
どこかに自動再生させるかどうかの設定があるのでしょうか? >>701
左と右のラベルのhuggingプライオリティを真ん中のラベルのものり高くするとどうでしょうか? 初心者向けなら何でもいいとおもう
一冊ともかく写経してつくりはじめよう
その後つまずきネットでも分からなかったら買って見よう
それでも分からなかったら聞いてみよう
アルゴリズムの基礎とかシステムへの落とし方とか仕様については、ある程度人のアプリを参考にするといい >>706
ラベルに背景色を付けて確認しましたが
希望通りにサイズが可変しているように見えます
ありがとうございました Xcode9のorganizerのエクスポートのメニューが変わりましたが、今後どのようにipaファイルを作成すれば良いでしょうか。 Swiftの指南書みながらコードを入力していて、
textfieldという単語を何度も入力していたのですが、
ある箇所だけエラーがでました。
全角やスペース、スペルの確認を何度もしましたが間違ってはいないのにエラーか出続けるのでほかの箇所からコピペしたらエラーが消えました。
なにか思い当たる原因はありますでしょうか lがIだったんだな
なぜか文字幅ゼロの制御コードが入っていたんだな
問題の箇所をよーく調べればわかるよ。無ければわかんないよ >>711
ありがとうございます。
回避する方法はありますか?
あとxCodeって字が小さいですね… エラーが出た時は最低限エラー内容をコピペして質問しよう >>712
なにやらかしたのか知らんから知らんが、やらかしたのをやらかさなければいいだろうw
文字の大きさは変えられるよ。Xcode > Prefrences.. > Font & Colors。普通どのエディタでも同じように同じようなとこで変えられるよなあ
(XCodeとか書くヤツはいるまあ間違えやすいが、xCodeって斬新w)
>>713
だよね はじめまして。質問です。
こちらのページを参考にしながら
(https://qiita.com/chaoz/items/c6de2fc80fb686942570)
(https://github.com/zweigraf/face-landmarking-ios)
Swiftで「Snow」のようなリアルタイムで顔を認識して画像を合成するようなアプリを作っています。
captureOutputでdlib+opencvで顔を認識してドロネー図を描画するところまできたのですが、そこから重ねる画像を表示する方法がわかりません。
cd::メソッドで表示できますか?
もしくは、AVFoundationなどで合成してからBufferを書き換える?のでしょうか。
よろしくお願いします。 そのgithubの例にあるAVSampleBufferDisplayLayerじゃだめなの? >>716
AVSampleBufferDisplayLayerで表示はできるんですが、
その前の工程でcvで映像の上に画像を重ねられないのかなと。
または別の手段が必要なんでしょうか? このバグをなおす方法を探してます
だれかご教示おねがいします
↓
https://youtu.be/kmN_v6Wea-s 下位互換に関する質問お願いします。
例えばxcodeのDeployment Targetを最新の 11.0 にしてアプリを作ってストアに登録したとして、
その後にiOS 11.1 とかが出てiOSのバージョン上げた端末でアプリをインストールした場合、動作するんでしょうか?
iOSはどんどんバージョン上がるようなのでどこまで動作保証されるのか、または全くされないのか、よく分からないので教えてください。 動くよ。マイナーバージョンアップは尚更。マイナーバージョンアップで動かなくならなんらかのよほど特殊な書き方したとか稀な場合だろう
メジャーバージョンアップ時の前のバージョン用にビルドしたアプリが正常に動くかどうかも、Appleが想定した通りに書いていれば動くだろう。が、まあ、Appleが想定してるのがどこまで細かく周知しているのか未知なので動かなくなるのもあるだろけど
何を心配しているのか漠然としすぎだが、あんま気にすることはない。一度作っておしまいで後はほっといてもずっと利用してほしいというわけでもないだろうから
deprecatedと(予告)されたAPI使ってて、とうとうdeprecatedになったら当然動かなくなるけどね。deprecated打たれてから実施まではかなり長い期間ある
(下位互換っていうから、今から作るのがどんだけ古いOSをサポートする/できるのかかと思った) >>720
レスどうもありがとう。
法人向けのビジネス用アプリなので、バグを出すわけにはいかないという前提があります。
それを前提にした疑問で、どこまでアップルが保証していて、どこからは保証されないから動作検証が必要なのか、その判断がよく分からないです。
11.0 でビルドしたアプリは、その後どこまで iOS のバージョンを上げた端末で動くのか、どこまでアップルが保証してくれるのか、
それを明確に判断する方法というか、そういうの何かありますか? >>721
そういうのはアップルが保証するのではなく、デベロッパーが対応するかしないかも含めて保証するものでしょ
というより、未来にどうなるかわからないOS上での動作保証まで普通開発要件には含めないと思うけどな
だから、アプリ使うためにOS古いままなんてこともあるわけだし >>722
まぁそうですよね。その通りだと思います。
iOS開発のノウハウがないので引き続き教えてください。
iOSは細かい物も含めてバージョンがどんどん上がるので大変そうなのですが、
11.0 でビルドしてストアに登録。
その後 11.1 が出た場合、 11.1 の端末で動くかどうかはアプリの開発会社が毎回動作検証してるものなんでしょうか。
細かいバージョンアップ多すぎて全て動作検証するのが現実的でない気がするんですが、一般的にはどうしてるんでしょう。 ■ このスレッドは過去ログ倉庫に格納されています