アプリの場合、変数を使用してオブジェクト(ラベル)のサイズと位置を変更する必要があります。私はvar example = CGRectMake(0, 0, 0, 100)
を試してみましたが、ゼロを無視することを期待しています(実際には考えていません) するだろう ただし)。私はそれから試しました:
var example = 100
Label1.frame = CGRectMake(20, 20, 50, example)
構文を少し変更して、 ""を追加し、CGRectMake
をCGRect
に置き換えましたが、何も機能しません...ここで間違っていることはわかりません...ヘルプ!
CGRectMake
は、引数のすべてにCGFloat
sを使用します。タイプコードを使用して、example
がCGFloat
であると指定した場合、サンプルコードは正常に機能します。
// v~~~~ add this...
var example: CGFloat = 100
Label1.frame = CGRectMake(20, 20, 50, example)
それ以外の場合、Swiftはexample
のタイプをInt
であると推測し、CGRectMake
の呼び出しは失敗します。 Int
をパラメータとして...
Swift 3アップデート
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
だから、猫の皮をむく方法はたくさんあります。それはすべて、ニーズと要件が何であるかに依存します(おそらく、達成しようとしていることについて少し詳しく説明できますか?)。しかし、それを行う1つの方法は、何かが発生したときに変数を設定してから、ラベルのフレームを更新することです。タップジェスチャレコグナイザをビューに追加し、ラベルを次のように更新した場合:
let myLabel = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
let tapGestRecog = UITapGestureRecognizer(target: self, action: "handleTap:")
self.view.addGestureRecognizer(tapGestRecog)
}
func handleTap(sender:UIGestureRecognizer) {
let newXposition = sender.locationInView(self.view).x
let newYposition = sender.locationInView(self.view).y
myLabel.frame = CGRectMake(newXposition, newYposition, 200, 200)
}
これは単なる例であり、非常に大まかな方法です。それを行うには他にも多くの方法がありますが、うまくいけば、それを達成する方法のアイデアが得られます。
Swiftでは、Objective-Cではできない構文を使用できます。
var example = 100
label.frame.size.height = example
Objective-Cでは、別の方法で行う必要があります。
CGRect frame = label.frame; //Create a temporary rect to hold the frame value
frame.size.height = example;
label.frame = frame;