質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1988閲覧

CGRectMakeについて

medamaoyaji

総合スコア14

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/07/25 15:37

前提・実現したいこと

ネットの記事を参考に現在カレンダーアプリを作っており、ColectionViewをMainStoryboradに載せ、Cellに「CalenderCell」という名前、と「CalenderCell.swift」を作り形にしていこうと思っていますが、CGRectMake新しいものが出てきた上に、エラーが出てしまいました。

実際に途中のコードを載せます
import UIKit

class CalenderCell: UICollectionViewCell {
var textLabel:UILabel!
required init (coder aDecoder:NSCoder){super.init(coder:aDecoder)!

//UILabelを作成 textLabel = UILabel(frame: CGRectMake(0,0,self.frama.width,self.frame.height)) }}

一番下の「CGRectMake...」のところで
'CGRectMake' is unavailable in Swiftというエラーが出ました。実際ネットの記事通りに行ったのですが、始めたばかりなのでどのようにエラーを解決すれば良いのかわかりません。
そしてなぜ「self」が入っているのかも恥ずかしながらよく分かっていません。
・エラー解決方法
・CGRectMakeについて調べたところは、ColectionViewの中のCellの位置、大きさを決めるコードだという理解をしています。間違えている場合のご指摘
・なぜ「self」が入っているのか
一つでも教えていただけると嬉しいです。

補足情報(FW/ツールのバージョンなど)

私がアプリ作成の元のしている記事も載せます。
https://qiita.com/sakuran/items/3c2c9f22cbcbf4aff731

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

参考にしている記事は2016年のもので現在のSwift4とは書き方が変わっています。
Swiftは比較的新しい言語であり、バージョンが変わることによって以前の書き方とは変わってしまうものが多々あります。

・エラー解決方法について
'CGRectMake' is unavailable in Swiftは文字通り、CGRectMakeは無効と言うことです。
CGRectMake(0,0,self.frama.width,self.frame.height)についてはSwift4だと
CGRect.init(x: 0, y: 0, width: self.frame.width, self.frame.height)
のような書き方になります。

XCodeのようなIDEにはコードの補完機能と言うものがあり、例えば今回のCGRectについても
CGRくらいまで打つとCGRを含みそうなもので使えるものの一覧のようなものが出てくると思います。
その次にCGRect.と打つとCGRectで使える機能の一覧のようなものが出てくると思います。
基本的にはそのようにしていくと正しく使えるコードが書けるようになっています。

・CGRectについて
その理解でほぼ正しいです。

・なぜ「self」が入っているのか
selfと言うのはそのクラス自身を指しており、例で言うとCalendarCellです。
そして、CGRectでサイズを指定する際にCalendarCellのframeのwidthとheightを入れており
かつ、開始位置は(0,0)。つまり、このCalendarCellのViewと同じサイズになるようにUILabelを作っていると言うのがコードの意味になります。

古い記事でも考え方や作り方としては変わらないので今の言語仕様に合った書き方をすれば問題ありません。
(実際に役立つ記事や情報などはたくさんあり、私も良くそのようなものを参考にして物を作っています)
ただ、もし今のSwiftのバージョンと書き方が変わらないもので参考にできるものがあればそちらを見た方が手間は少なくなるかもしれません。

投稿2018/07/25 18:54

razuma

総合スコア1313

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

medamaoyaji

2018/07/26 06:57

わからない所を明確に指摘してくださりありがとうございます。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問