SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

連載記事

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
Objective-CユーザーのためのSwift入門

Swiftでアプリの画面を作ろう! ~Objecive-Cとの比較で学ぶ

Objecive-CユーザーのためのSwift入門 第4回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルファイル (10.5 MB)

 本連載では、Objective-Cの基本的なプログラムが出来る読者を対象に、Swiftを使ってアプリを開発する際の基本的な事柄を解説します。Objective-CもSwiftもC言語を母体としたプログラム言語なので両者に共通する概念は非常に多いです。Objective-CとSwiftとの最低限度の違いを踏まえつつ、Swiftでのアプリ開発にシフトして行けるような内容を、サンプルを交えながら解説します。今回は、アプリの画面を作成する方法について説明します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 前回までにSwiftの基本的な文法とクラスの使い方について説明しました。連載第4回では、実際にアプリの画面を作成する方法について説明します。

 対象読者をObjective-Cが分かる方としている関係上、Objective-C自体の言語仕様やXcodeの使い方については解説を割愛する場合があることをご了承ください。同様にSwift自体の説明も必ずしも十分でない場合があります。そのような場合は末尾の参考文献等を参照してください。

対象読者

 本記事は、次の方を対象にしています。

  • Objective-Cの基本的なプログラムが出来る方
  • Xcodeを使える方

画面の構成

 iOSアプリの開発は、簡単に言うと画面の上に画像やテキストなどのコンテンツを配置して進めます。画面の上に配置して表示するという基幹のクラスはUIViewクラスです。そして画面上に配置されるコンテンツは全てUIViewクラスの派生クラスです。

ビューの位置関係

 iOSアプリでは、画面の左上の頂点を(0, 0)として画面内の位置関係を考えます。画面上に配置するコンテンツは、次の3つの構造体で位置とサイズを管理します。

画面内の位置とサイズを管理する構造体
名前 概要 生成する関数
GGPoint 画面内の位置を管理する構造体 CGPointMake(横位置, 縦位置)
CGSize サイズを管理する構造体 CGSizeMake(横幅, 縦幅)
CGRect 位置とサイズの両方を管理する構造体 CGRectMake(横位置, 縦位置, 横幅, 縦幅)

 3つの構造体の関係は次の図の通りです。

画面上の位置関係を示す構造体の関係
画面上の位置関係を示す構造体の関係

 具体的な利用の例については、次節のサンプルで確認できます。また、画面上の位置関係も画面全体から見る場合とローカルの位置から見る場合の2通りで扱えるプロパティが用意されています。

位置関係を扱うプロパティ
名前 概要
frame 親となるビューから見た際の座標系の位置とサイズ
bounds 自分自身のローカル座標系の位置とサイズ
位置関係を扱うプロパティ
位置関係を扱うプロパティ

 今回のサンプルで利用するクラス/ファイルは次の通りです。

サンプルで利用するSwiftのファイル
名前 役割 サンプル内の該当するファイル
AppDelegate アプリを管理する最上位のクラス AppDelegate.swift
ビューコントローラー 画面を管理するクラス ViewController.swift
xlib InterfaceBuiderで生成した画面のUI SampleViewController.xib

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ビューコントローラーを利用する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Objective-CユーザーのためのSwift入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 片渕 彼富(カタフチ カノトミ)

<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8425 2015/02/09 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  2. 2
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略 NEW
  3. 3
    AWS、ノーコードで生成AIアプリを作れる「PartyRock」の新機能を紹介、2025年以降は無料で誰でも利用できるように NEW
  4. 4
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース NEW
  5. 5
    Google、社内AIエージェント「Google Agentspace」発表
  1. 6
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース NEW
  2. 7
    チーム全員の生産性を上げる! メルカリ deeeetさんに聞く、Platform Engineeringの醍醐味 NEW
  3. 8
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 9
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  5. 10
    マイクロソフト、VS Code用のOfficeアドイン開発キットのGA版を提供開始 NEW

アクセスランキング

  1. 1
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  2. 2
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略 NEW
  3. 3
    AWS、ノーコードで生成AIアプリを作れる「PartyRock」の新機能を紹介、2025年以降は無料で誰でも利用できるように NEW
  4. 4
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース NEW
  5. 5
    Google、社内AIエージェント「Google Agentspace」発表
  6. 6
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース NEW
  7. 7
    チーム全員の生産性を上げる! メルカリ deeeetさんに聞く、Platform Engineeringの醍醐味 NEW
  8. 8
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  9. 9
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  10. 10
    マイクロソフト、VS Code用のOfficeアドイン開発キットのGA版を提供開始 NEW
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  6. 6
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  7. 7
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  8. 8
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  9. 9
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に
  10. 10
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

メールバックナンバー

アクセスランキング

  1. 1
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  2. 2
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略 NEW
  3. 3
    AWS、ノーコードで生成AIアプリを作れる「PartyRock」の新機能を紹介、2025年以降は無料で誰でも利用できるように NEW
  4. 4
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース NEW
  5. 5
    Google、社内AIエージェント「Google Agentspace」発表
  1. 6
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース NEW
  2. 7
    チーム全員の生産性を上げる! メルカリ deeeetさんに聞く、Platform Engineeringの醍醐味 NEW
  3. 8
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  4. 9
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  5. 10
    マイクロソフト、VS Code用のOfficeアドイン開発キットのGA版を提供開始 NEW

アクセスランキング

  1. 1
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  2. 2
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略 NEW
  3. 3
    AWS、ノーコードで生成AIアプリを作れる「PartyRock」の新機能を紹介、2025年以降は無料で誰でも利用できるように NEW
  4. 4
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース NEW
  5. 5
    Google、社内AIエージェント「Google Agentspace」発表
  6. 6
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース NEW
  7. 7
    チーム全員の生産性を上げる! メルカリ deeeetさんに聞く、Platform Engineeringの醍醐味 NEW
  8. 8
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  9. 9
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  10. 10
    マイクロソフト、VS Code用のOfficeアドイン開発キットのGA版を提供開始 NEW
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  6. 6
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  7. 7
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  8. 8
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  9. 9
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に
  10. 10
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!