cevap

6

Programlı olarak yapılması gerekiyor, inanıyorum. Xcode 6.3'den itibaren, kısıtlama sabit değerleri, storyboard editöründeki tamsayılarla sınırlı gibi görünmektedir (ondalık değerlerin aksine, ondalık değerler olabilir). Google Çalışanları için

, burada bunu nasıl açıklanmıştır:

film şeridindeki tanımlanan bir kısıtlama için ondalık değer belirtmek için, bir kısıtlama Ivar sürekli özelliğini ayarlayabilirsiniz. İşte 0.5f bir yükseklik sınırlaması ayarlamak bir örnek: senin başlığında

:

@property (nonatomic, retain) IBOutlet NSLayoutConstraint *separatorHeightConstraint; 

sonra film şeridindeki kısıtlaması için IBOutlet bağlayın. senin uygulamada

: hepsi

-(void)layoutSubviews { 
    [super layoutSubviews]; 
    self.separatorHeightConstraint.constant = 0.5f; 
} 

!

+0

. 'Constant' yalnızca bir kez ayarlanmalı ve daha sonra' layoutSubviews' üzerinde otomatik olarak yeniden çizilecektir. Yoksa bir şey mi özlüyorum? –

+0

Bir sabitin ayarlanması bir düzeni tetiklemiyor. Apple'ın belgeleri şunları söylüyor: "Düzenleme motoru tarafından döndürülen sonuçları değiştirmek için viewWillLayoutSubviews veya layoutSubviews yöntemlerini geçersiz kıl." [link] (https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/ModifyingConstraints.html#//apple_ref/doc/uid/TP40010853-CH29-SW4) – adamup

+0

Belki kendimi yanlış söyledim . Demek istediğim 'constraint.constant = value;' ** bir kere ** ve sonra '[self.view setNeedsLayout]; 'ı çağırmalı ve layout sistemi kendi işini yapsın. Her bir düzen döngüsündeki değeri neden yeniden ayarlamalısınız? –

0

yapmak ki içinde:

- (void)updateConstraints { 
    self.separatorHeightConstraint.constant = 0.5f; 
    [super updateConstraints]; 
} 
-1

Tip lider 0

örneğin istenen ondalık değer 0.9, ekran ölçeğinde bağlı değildir Film şeridinde sabit ondalık değer ayarlamanız gerekiyorsa değil 0,9

3

, bunun olacağını sabit kısıt için örneğin user defined runtime attributes kullanabilirsiniz:

Anahtar Yol: constant Tür: Number Değer: 0,5


sen 2x ve 3x cihazlar @ sen görünümün genişlik/yükseklik ayarlar ve ayarlanmış bir kısıtlamayı kullanabilirsiniz @ 1-piksel genişliği ile bir görünüm yaparak sınırlayıcı olmak için kendi sınıfına kendi kısıtlama alt sınıfı. Böyle alt sınıfının örneği: OnePixelWidthConstraint.h:

#import <UIKit/UIKit.h> 

@interface OnePixelWidthConstraint : NSLayoutConstraint 
@end 

OnePixelWidthConstraint.m:

#import "OnePixelWidthConstraint.h" 

@implementation OnePixelWidthConstraint 

- (CGFloat)constant { 
    return 1./[UIScreen mainScreen].scale; 
} 

@end 

sadece bir kez değerini hesaplamak için: Evet, yapabilirsin

- (CGFloat)constant { 
    static CGFloat onePixel = 0; 
    return onePixel?:(onePixel = 1./[UIScreen mainScreen].scale); 
} 
20

.

  1. böyle bir "f" sonekli değeri girin: enter image description here

  2. tıklayın Öncelik. fark nasıl 0,5'e etkili kısıtlama değeri değişiklikleri: enter image description here

  3. Hit ESC kısıtı görünümü görüşlerini düzenleri her zaman (çok kere) arasında `constant` değiştirecek
+0

Xcode 7'de 0'a yuvarlar, en güvenilir yol kodu – Digitech

+1

kodunda ayarlamaktır. Bu, Xcode 7.3.1 üzerinde test edilir ve çalışır. Talimatları, göründüğü kadar tuhaf bir şekilde takip ettiğinizden emin olun. – AmitP

+0

Bu garip ama aynı zamanda Xcode Sürüm 8.3.1'de çalışıyor (8E1000a) –

İlgili konular