2013-09-02 33 views
36

UIView kullanıyorum, kullanıcı bir düğmeye dokunduğunda boyutu değiştirmek istiyorum.UIView boyutunun program aracılığıyla değiştirilmesi

CGRect newFrame = self.myview.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
[self setFrame:newFrame]; 

CGRect newFrame = self.searchField.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
self.searchField.frame=newFrame; 

Hiçbiri çalışmıyor, hiçbir şeyi değiştirmeyin. UIView'e sabit genişlik ve yükseklik ayarlamak istiyorum.

+0

Bu görüşe uygulama dosyasında mı kontrolör? –

+0

@Tim Bodeit evet. – onivi

cevap

71

Doğru anlıyorsam, self.myview boyutunu değiştirmek istiyorsunuz. Ancak hiçbir noktada onun çerçevesini ayarlamazsınız. Bunun yerine, görünüm denetleyicisine ve bazı arama alanına sendFrame:'u aramaya çalışıyorsunuz. Şaşırdım, eski olan bir derleyici hatası vermedi.

Dene:

CGRect newFrame = self.myview.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
[self.myview setFrame:newFrame]; 
+1

Downvoter neden yorumda bulunur? –

+4

kodunun UICollectionView – Gerry

+0

@Gerry üzerinde hiçbir etkisi olmayacak gibi görünüyor: UICollectionView üzerinde çalışacak. Her ne kadar koleksiyon görünümü içindeki hücreler üzerinde çalışmayacak olsa da. Bunların boyutları, görünümlerin kendileri tarafından değil, koleksiyon görünümü için kullanılan düzen tarafından belirlenir. KoleksiyonView: düzenine bakın: UICollectionViewDelegateFlowLayout protokolünden sizeForItemAtIndexPath –

5
view.frame = newframe; 

veya

Benim durumumda
view.center = newcenter; 
4

, benim bakış genişliğine bir sınırlama vardı, bu yüzden Tim dediğim gibi genişliğini değiştirmek olamazdı .

Ne yaptım: Örneğin myviewWidthConstraint olarak adlandırılan benim güvenliğim üzerinde bir çıkış yarattım. Sonra böyle Bence genişliğini değiştirmek için bu çıkış kullandı:

Boyut alanlar salt okunur
mycell.myviewWidthConstraint.constant = newSize; 
0

, sadece yeni bir hale -

//Set height 
let f = view.frame;  //Grab current 
view.frame = CGRect(x: f.origin.x, y: f.origin.y, width: f.width, height: 200); 
İlgili konular