Jak usunąć zewnętrzną granicę segmentowanego elementu sterującego w kodzie X? Ustawiłem obrazek dzielnika na to, co chciałem, ale teraz, aby podążać za symulacją mojej aplikacji, potrzebuję segmentowanej kontroli bez zewnętrznej granicy.Swift: Jak usunąć obramowanie z kontroli segmentacji
7
A
Odpowiedz
25
Za pomocą poniższej funkcji można usunąć obramowania i separatory. Tworzenie rozszerzenia UISegmentedControl:
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!
}
}
połączenia powyższych funkcji.
segmentedControl.removeBorders()
referencyjny: Remove UISegmentedControl separators completely. (iphone)
Dzięki https://stackoverflow.com/users/3921490/amagain Swift 3 wersji.
9
Oto szybka wersja 3 odpowiedzi Sohil, która może pomóc komuś innemu. Pomogło mi to. :)
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
Jeśli chcesz zaoszczędzić granice między komórkami
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
}
}
Powiązane problemy
- 1. Jak usunąć błąd segmentacji Pythona?
- 2. Jak usunąć obramowanie na układ
- 3. Jak usunąć obramowanie za przyciskiem?
- 4. Jak usunąć obramowanie wokół obrazu w css?
- 5. Jak usunąć obramowanie wokół skoncentrowanego contenteditable?
- 6. Jak usunąć obramowanie rozwijanej listy: CSS
- 7. Jak usunąć obramowanie ButtonChrome (przy definiowaniu szablonu obramowania)?
- 8. Jak usunąć obramowanie z pola tekstowego w WPF?
- 9. Usuń obramowanie i margines wokół iOS Charts w Swift
- 10. Jak usunąć wiele elementów z tablicy SWIFT?
- 11. Jak zmienić kolor obramowania (lub usunąć obramowanie) kontrolki PropertyGrid?
- 12. Swift UIBUTton - Jak usunąć podkreślenie?
- 13. Okno bez obramowania. Jak dodać cień i usunąć obramowanie 1px?
- 14. Jak mogę usunąć obramowanie wokół obrazu bez źródła?
- 15. Łączenie debugowania .swiftmodule: błąd segmentacji: 11
- 16. Jak usunąć wiele miejsc w ciągach z Swift 2
- 17. Jak usunąć klasę testu Swift Xcode z nawigatora testu?
- 18. Obramowanie z trzech stron
- 19. Białe obramowanie wokół GroupBox
- 20. Nie można skompilować plików źródłowych Swift. Błąd segmentacji: 11
- 21. Błąd segmentacji haskell z silnikiem
- 22. jak podać obramowanie do zawartości zakładki początkowej
- 23. Jak usunąć obramowanie 3d (zatopiony) z komponentu MDIClient w formularzu nadrzędnym MDI?
- 24. Jak usunąć obramowanie okna (zawierające przyciski minimalizacji, maksymalizacji i zamknięcia) z widżetu Qt?
- 25. Jak mogę usunąć niewyraźne obramowanie z przeglądarki na skoncentrowanych elementach formularza?
- 26. Jak wyłączyć obramowanie obrazu w IE
- 27. iPhone: dodawanie kontroli segmentacji do paska narzędzi zamiast przycisków w kontrolerze nawigacyjnym?
- 28. Jak ustawić obramowanie do tabeli
- 29. Jak dodać obramowanie wokół TableLayout?
- 30. Jak narysować obramowanie wokół UILabel?
Dzięki :) Udało = D Ale jeszcze jedno pytanie, uczyni to moja segmentowa kontrola mieć ostry róg prostokąta, wszelkich sposobów, aby uczynić to zaokrąglone? – Happiehappie
@Happiehappie nie, nie możesz, zapoznaj się z tą odpowiedzią http://stackoverflow.com/questions/1834244/uisegmentedcontrol-withrounded-corner –
Otrzymuję 'błąd krytyczny: nieoczekiwanie znaleziono zero podczas rozpakowywania wartości opcjonalnej' on-line 'setBackgroundImage (imageWithColor (color: backgroundColor!), dla: .normal, barMetrics: .default)' – Kakaji