CGSize nesnesinin değeri nasıl yazdırılır veya kaydedilir?


88

CGSize nesnesinin değerini şu şekilde günlüğe (yazdırmaya) çalışıyordum:

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

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

Bu kodda yanlış bir şey var mı; denetim NSLog deyimine gelirken uygulamam çöküyor.

Teşekkürler Prasad


2
NSStringFromCGSize () ve ayrıca NSStringFromCGRect ()
Fattie

Yanıtlar:


55

Peşinde olduğunuz değeri yazdırmak için aşağıdakileri arayabilirsiniz:

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

218

Bunu dene

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

Kilitlenme, formatta sizeOfTabolmadığı için meydana gelir NSString.


3
Harika, bugün öğrendiğim yeni bir şey. +1, ancak cevabımı silmeyeceğim :-P.
Praveen S

@Praveen: Teşekkürler .. Bugün yeni bir şey öğrenmenize yardımcı olduğuma sevindim ... Sadece iyiliğe karşılık veriyorum. SO aracılığıyla bu tür bilgileri aldım ve hala alıyorum.
visakh7

1
@ 7KV7 Kilitlenme, sizeOfTabbir nesne olmadığı için meydana gelir (herhangi bir nesne çalışır, sadece a değil NSString). CGSizebir yapıdır.
albertamg

teşekkürler, çalışıyor, iyi çalışıyor, ancak görüntüleniyor {nan, 49}, nan nedir?
Prasad

@Prasad: nan Bence Not a Number anlamına geliyor. tabCount nedir? günlüğe kaydetmeyi deneself.frame.size.width/tabCount
visakh7

11

As JoeBlow sözü ( ben yazmaya ve bu cevabı biçimlendirme sonra fark ), ayrıca UIKit işlevi var, NSStringFromCGSize()oldukça baskı ve bunun tersi için, CGSizeFromString()bir oluşturmak için CGSizebir gelen yapı NSStringnesnesi.

Apple, stringparametresini aşağıdaki gibi belgeler :CGSizeFromString(string)

İçeriği "{ w , h }" biçiminde olan bir dize; burada w genişlik ve h yüksekliktir. W ve h değerleri, tam sayı ya da hareketli değerler olabilir. Geçerli bir dize örneği @ "{3.0,2.5}" dir. Dize yerelleştirilmez, bu nedenle öğeler her zaman virgülle ayrılır.


Misal

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

Çıktı

Pretty printed size: {320, 568}

Diğer Yararlı İşlevler ( CGGeometry Referansı )

  • CGRectGetHeight ()
  • CGRectGetWidth ()

6

% @, bir dizgi eklemeye çalıştığınız anlamına gelir. CGSize bir dizge değildir ve otomatik olarak bir dizgeye dönüştürülemez. Bu yüzden uygulamanız çöküyor. Bunun yerine, ayrı mülkleri ayrı ayrı kaydetmeniz gerekir.

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

% f, width ve height özellikleri float türünde olduğu için kullanılır .

Diğer biçim dönüşümleri için şu dokümanlara bakın: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html


SO'ya hoş geldiniz. Ayrıntılı bir cevap için +1.
Praveen S

Teşekkürler. Etrafa bir göz attım ve kaç kişinin soru sormadan önce belgelere bakmaya zahmet etmediğini görmek harika. Bağlantıyı oraya koydum, böylece int yazdırmayı soran başka bir soru almayalım .
Greg

3

CGSizeMemebers tipi olan genişlik ve yüksekliğe sahiptir CGFloat. Bunları aşağıdakileri kullanarak yazdırabilirsiniz

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

3

Burada self.view, UIView Sınıfı'nın görünümüdür. Bu günlükle herhangi bir kareyi yazdırabilirsiniz.

      NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.