Bagaimana cara mencetak atau mencatat nilai objek CGSize?

88

Saya mencoba untuk mencatat (mencetak) nilai objek CGSize seperti ini:

CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);

NSLog(@"size of tab is %@",sizeOfTab);

Apakah ada yang salah dalam kode ini; aplikasi saya mogok saat kontrol datang ke pernyataan NSLog.

Terima kasih Prasad

Prasad
sumber
2
NSStringFromCGSize () dan juga NSStringFromCGRect ()
Fattie

Jawaban:

55

Anda dapat memanggil berikut ini untuk mencetak nilai yang Anda cari:

NSLog(@"width = %f, height = %f", mySize.width, mySize.height);
Luke
sumber
218

Coba ini

CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));

Kemacetan terjadi karena sizeOfTabtidak dalam NSStringformat.

visakh7
sumber
3
Keren ini adalah sesuatu yang baru yang saya pelajari hari ini. +1, tetapi saya tidak akan menghapus jawaban saya :-P.
Praveen S
@ Praveen: Terima kasih .. Senang saya bisa membantu Anda mempelajari sesuatu yang baru hari ini ... Hanya membalas budi. Saya telah dan masih menerima informasi tersebut melalui SO.
visakh7
1
@ 7KV7 Kecelakaan terjadi karena sizeOfTabbukan objek (objek apa pun akan bekerja, bukan hanya a NSString). CGSizeadalah sebuah struct.
albertamg
thanku berfungsi dengan baik, tetapi menampilkan {nan, 49}, apa itu nan?
Prasad
@Prasad: nan menurut saya singkatan dari Not a Number. apa itu tabCount? coba masukself.frame.size.width/tabCount
visakh7
11

Seperti yang disebutkan JoeBlow ( saya perhatikan setelah mengetik dan memformat jawaban ini ), ada juga fungsi UIKit NSStringFromCGSize(), untuk pencetakan cantik, dan kebalikannya CGSizeFromString(), untuk membuat CGSizestruct dari suatu NSStringobjek.

Apple mendokumentasikan stringparameter sebagai berikut:CGSizeFromString(string)

Sebuah string yang isinya berupa "{ w , h }", dimana w adalah lebar dan h adalah tinggi. Nilai w dan h dapat berupa nilai integer atau float. Contoh string yang valid adalah @ "{3.0,2.5}". String tidak dilokalkan, jadi item selalu dipisahkan dengan koma.


Contoh

CGSize size = CGSizeFromString(@"{320,568}");
NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));

Keluaran

Pretty printed size: {320, 568}

Fungsi Berguna Lainnya ( Referensi CGGeometry )

  • CGRectGetHeight ()
  • CGRectGetWidth ()
yurrriq
sumber
6

% @ berarti Anda mencoba memasukkan string. CGSize bukanlah string, dan tidak dapat secara otomatis diubah menjadi string. Itulah mengapa aplikasi Anda mogok. Sebaliknya, Anda perlu membuat log properti individu secara terpisah, seperti

NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);

% f digunakan karena properti lebar dan tinggi berjenis float .

Untuk konversi format lainnya, lihat dokumen: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

Greg
sumber
Selamat datang di SO. 1 untuk jawaban mendetail.
Praveen S
Terima kasih. Saya telah melihat-lihat dan sungguh menakjubkan melihat betapa banyak orang yang tidak pernah repot-repot melihat dokumen sebelum mengajukan pertanyaan. Saya meletakkan tautan di sana sehingga kami tidak mendapatkan pertanyaan lain yang menanyakan cara mencetak int .
Greg
3

CGSizememiliki lebar dan tinggi memebers yang bertipe CGFloat. Anda dapat mencetaknya menggunakan berikut ini

NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);
Praveen S
sumber
3

Berikut self.view adalah view dari UIView Class. Anda dapat mencetak bingkai apa pun dengan log ini.

      NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));
Disha
sumber