Bölme denetiminin dış kenarlığını xcode'ta nasıl silebilirim? Bölücü görüntüsünü istediğim şeye ayarlıyorum ama şimdi benim uygulamamın alayını takip etmek için dış kenarlık olmadan bölümlenmiş bir kontrolüm olması gerekiyor.Swift: Bölünmüş denetimin kenarlığı nasıl kaldırılır
7
A
cevap
25
Aşağıdaki işlevi kullanarak hem kenarlıkları hem de ayırıcıları kaldırabilirsiniz. UISegmentedControl uzantısı oluşturun:
For Swift 2.2:
extension UISegmentedControl {
func removeBorders() {
setBackgroundImage(imageWithColor(backgroundColor!), forState: .Normal, barMetrics: .Default)
setBackgroundImage(imageWithColor(tintColor!), forState: .Selected, barMetrics: .Default)
setDividerImage(imageWithColor(UIColor.clearColor()), forLeftSegmentState: .Normal, rightSegmentState: .Normal, barMetrics: .Default)
}
// create a 1x1 image with this color
private func imageWithColor(color: UIColor) -> UIImage {
let rect = CGRectMake(0.0, 0.0, 1.0, 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, rect);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image
}
}
For Swift 3:
extension UISegmentedControl {
func removeBorders() {
setBackgroundImage(imageWithColor(color: backgroundColor!), for: .normal, barMetrics: .default)
setBackgroundImage(imageWithColor(color: tintColor!), for: .selected, barMetrics: .default)
setDividerImage(imageWithColor(color: UIColor.clear), forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
}
// create a 1x1 image with this color
private func imageWithColor(color: UIColor) -> UIImage {
let rect = CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
context!.setFillColor(color.cgColor);
context!.fill(rect);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image!
}
}
Çağrı yukarıdaki fonksiyonu.
segmentedControl.removeBorders()
Referans: Swift 3 sürümü için https://stackoverflow.com/users/3921490/amagain için Remove UISegmentedControl separators completely. (iphone)
teşekkürler.
9
Sohil 'un hızlı bir sürümünün, bir başkasına yardımcı olabileceği yanıtı. Bana yardım etti. İşe yaradı :) :)
extension UISegmentedControl {
func removeBorders() {
setBackgroundImage(imageWithColor(color: backgroundColor!), for: .normal, barMetrics: .default)
setBackgroundImage(imageWithColor(color: tintColor!), for: .selected, barMetrics: .default)
setDividerImage(imageWithColor(color: UIColor.clear), forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
}
// create a 1x1 image with this color
private func imageWithColor(color: UIColor) -> UIImage {
let rect = CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
context!.setFillColor(color.cgColor);
context!.fill(rect);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image!
}
}
1
D = hücreler arasında
extension UISegmentedControl {
func removeBorders() {
if let backgroundColor = backgroundColor, let backgroundImage = UIImage.imageWithSize(size: CGSize.one_one, color: backgroundColor){
setBackgroundImage(backgroundImage, for: .normal, barMetrics: .default)
}
if let tintColor = tintColor, let tintImage = UIImage.imageWithSize(size: CGSize.one_one, color: tintColor){
setBackgroundImage(tintImage, for: .selected, barMetrics: .default)
setDividerImage(tintImage, forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
}
}
}
extension CGSize{
static var one_one: CGSize{
return CGSize(width: 1.0, height: 1.0)
}
}
extension UIImage{
static func imageWithSize(size : CGSize, color : UIColor = UIColor.white) -> UIImage? {
var image:UIImage? = nil
UIGraphicsBeginImageContext(size)
if let context = UIGraphicsGetCurrentContext() {
context.setFillColor(color.cgColor)
context.addRect(CGRect(origin: CGPoint.zero, size: size));
context.drawPath(using: .fill)
image = UIGraphicsGetImageFromCurrentImageContext();
}
UIGraphicsEndImageContext()
return image
}
}
İlgili konular
- 1. Çekirdek-grafik grafiği çevresindeki kenarlığı nasıl kaldırılır
- 2. Hiper bağlantı görüntüsünün kenarlığı nasıl kaldırılır?
- 3. IE7'deki iframe kenarlığı nasıl kaldırılır?
- 4. Swift FFT - Karmaşık bölünmüş sorun
- 5. Düğme tıklatıldığında, mavi kutu gölge kenarlığı nasıl kaldırılır
- 6. Düğme kullanılarak indeks nasıl kaldırılır SWIFT
- 7. NSURLRequest, Swift 3 NSMutableURLRequest dönüşümü nasıl kaldırılır?
- 8. Swift storyboard'lar: Bölünmüş görünüm denetleyicisi görsel senaryoları & swift kullanarak bölünmüş görünüm denetleyicisi uygulamak çalışılıyor düzgün
- 9. Denetimin özelliği başka bir denetimin mülküne nasıl bağlanır?
- 10. Kahraman sprite kenarlığı nasıl takılır
- 11. Bölünmüş
- 12. Swift -
- 13. NSView Kenarlığı Rengi
- 14. Düğmelerden kenarlığı kaldırın
- 15. UIImage kenarlığı ayarlama
- 16. Kendi form kenarlığı stili
- 17. Nasıl "bölünmüş" dosyalar
- 18. Bir denetimin "görünür alanı"?
- 19. WPF: Bir denetimin
- 20. Bağlanmamış bir denetimin
- 21. Koddaki bir denetimin etiketine nasıl erişilir?
- 22. denetimin ızgara satırının nasıl değiştirileceği wpf
- 23. Formdaki hangi denetimin odaklandığı nasıl belirlenir?
- 24. ListViewItem üzerinde kenarlığı kaldırma
- 25. Nesne Flash'a odaklandığında sarı kenarlığı nasıl kaldırırım?
- 26. CSS3'ü kullanarak iç kenarlığı nasıl yapabilirim?
- 27. <tbody> öğesinin kenarlığı nasıl ayarlanır?
- 28. Bölünmüş dize
- 29. Bölünmüş '/' kadar '['
- 30. Bölünmüş sütun
Teşekkür sınırları kaydetmek istiyorsanız Ama bir soru daha, bu benim parçalı denetim keskin dikdörtgen köşe var yapacak, herhangi bir yolu yapmak yuvarlak mı? – Happiehappie
@Happiehappie hayır yapamazsınız, lütfen bu cevaba bakın http://stackoverflow.com/questions/1834244/uisegmentedcontrol-without-rounded-corner –
Ölümcül hata alıyorum: Beklenmedik şekilde bir Opsiyonel değer çıkarılırken sıfır bulundu on line setBackgroundImage (imageWithColor (color: backgroundColor!), için: .normal, barMetrics: .default) ' – Kakaji