2012-10-07 45 views
13

çerçevesini değiştiremiyor Çok garip bir sorunla karşılaştım. IOS 6 ve Xcode 4.5 kullanıyorum. İçinde bir UIViewController ve bir UIButton ile bir storyboard var. .h dosyama zayıf bir UIButton çıkış yaptım.iOS, UIButton

.m dosyasında, düğmenin çerçevesini değiştirmek istiyorum ancak hiçbir şey olmuyor. Yine de UIImageView oluşturdum ve UIButton ile aynı şekilde bağlıyım ama UIImageView 'un çerçevesini sorunsuz olarak değiştirebilirim.

Bunu yaparken:

NSLog(@"%@", button) 

bu çıktıyı almak:

<UIButton: 0xa185a40; frame = (191 330; 73 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xa185640>> 

Ve bunlar benim kod ilgili kısımları şunlardır:

-(void)viewDidLayoutSubviews{ 
    [self addStampGrid]; 
} 

-(void)addStampGrid { 

    // ... 

    [_button setFrame:CGRectMake(10,10,10,10)]; 
} 
+0

Daha fazla bağlamı nasıl göstereceğim? http://sscce.org –

+0

Çerçeveyi ayarlamayı denemeden önce, 'NSLog ("% @", düğme);' yi deneyin ve nil olmadığından emin olun. Çıkışın doğru şekilde kurulmadığından şüpheleniyorum. NSLog'da – lnafziger

+0

hmmm 'button' ve setFrame –

cevap

23

garip aynı vardı dağıtım hedefi olarak XCode 4.5 ve iOS 6 kullanarak sorun. Yine de hikaye tahtasını kullanmıyorum. Arabirim Oluşturucu'daki "Otomatik Kullanmayı Kullan" seçeneğini devre dışı bırakarak çözmeyi başardım. (Dosya Müfettişi> Arayüz oluşturucu belgesinde.

Umut bu

+0

Bu, hızlı bir kesmek ve kötü bir fikir gibi görünüyor. @IBOutlets ile kısıtlamaları değiştirmek ve button.layer.frame dosyasını değiştirmek daha iyi olur. – boidkan

6

Superview manzarayı çıkarın ve çerçeve bir subview yine bu görünüm eklemek ayarladıktan sonra yardımcı olur. Bu iyi çalışır Umut ...

+0

Bu, "Otomatik Kullan özelliğini kullan" ı tamamen kapatmam gerekmeden, benim için işe yaradı. Bu yüzden, uygun olduğunda otomatik düzen ve manuel hesaplama karışımına sahip olabilirim. 1! –

1

// Superview gelen

CGRect bounds = view.bounds; 
yourButton.center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds)); 
UIButton

ait

UIView *view = yourButton.superview; 
[yourButton removeFromSuperview]; 

// değişim çerçevesi görünüm kaldırılsın

// Bunu kullanmadan önce sınıf başlığındaki UIButton

[self.button.layer setFrame:] 

ithalat QuartzCore çerçevesi Katmanın çerçevesini değiştirerek UIButton çerçevesini değiştirebilir bir subview

[view addSubview:yourButton]; 
11

olarak bu görüşünü ekleyin. Bu, otomatik düzende de çalışır.

+0

Yukarı oyla, benim için çalıştı. Bu sorunun neden daha önce oy kullandığını bilmiyorum. – NSPratik

+0

Bu doğru cevap, evet. –

7

Sen Düğmenizin bu ayarlayabileceğiniz kareden sonra bu

[_button setTranslatesAutoresizingMaskIntoConstraints:YES]; 

kullanabilirsiniz.

Bu özellik, kısıtlamalar hakkında günlük olarak bazı uyarılar verebilir. Bu özellik, otomatik düzenleme sırasında verdiğiniz kısıtlamaları geçersiz kılar.