• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Das Monatsmotto Juli lautet -- Kitsch as Kitsch can -- Jeder von Euch kann dafür ganz individuell bestimmen, was für ihn Kitsch ist und ein Foto davon einsenden. Macht mit, traut Euch! --> Klick

UIView Border Color

ThisIsBeat

Empire
Registriert
02.02.16
Beiträge
85
<div class="bbWrapper">Hallo,<br /> <br /> ich habe in meinem Code zwei UIViews und möchte nun für beide jeweils auf einer Seite den Rand einfärben. Bei der einen UIView funktioniert das auch, bei der anderen jedoch nicht. Weiß zufällig jemand warum ? Hier der Code:<br /> <br /> PS: rightBorder funktioniert nicht <br /> <br /> <div class="bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code"> <div class="bbCodeBlock-title"> Code: </div> <div class="bbCodeBlock-content" dir="ltr"> <pre class="bbCodeCode" dir="ltr" data-xf-init="code-block" data-lang=""><code>import UIKit class ViewController: UIViewController { @IBOutlet weak var leftBorder: UIView! @IBOutlet weak var rightBorder: UIView! override func viewDidLoad() { super.viewDidLoad() leftBorder.addBorder(toSide: .Right, withColor: UIColor.white.cgColor, andThickness: 1.0) rightBorder.addBorder(toSide: .Left, withColor: UIColor.white.cgColor, andThickness: 1.0) // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } extension UIView { // Example use: myView.addBorder(toSide: .Left, withColor: UIColor.redColor().CGColor, andThickness: 1.0) enum ViewSide { case Left, Right, Top, Bottom } func addBorder(toSide side: ViewSide, withColor color: CGColor, andThickness thickness: CGFloat) { let border = CALayer() border.backgroundColor = color switch side { case .Left: border.frame = CGRect(x: frame.minX, y: frame.minY, width: thickness, height: frame.height + 200.0); break case .Right: border.frame = CGRect(x: frame.maxX, y: frame.minY, width: thickness, height: frame.height + 200.0); break case .Top: border.frame = CGRect(x: frame.minX, y: frame.minY, width: frame.width, height: thickness); break case .Bottom: border.frame = CGRect(x: frame.minX, y: frame.maxY, width: frame.width, height: thickness); break } layer.addSublayer(border) } }</code></pre> </div> </div></div>
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
<div class="bbWrapper">Du berechnest den Frame für den „Border-Layer“ auf Basis des View-Frames. Das würde nur funktionieren, wenn der View in der oberen Linken Ecke liegt, also bei Punkt (x: 0, y:0). Du musst das Koordinatensystem des View verwenden, also die 'bounds'. Außerdem musst du die Breite bei der Positionierung des „Border-Layer“ für die Fälle .Right und .Bottom berücksichtigen.<br /> <br /> Übrigens ist in den case Statements am Ende kein 'break' nötig. Das ist in Swift das Standardverhalten.</div>
 
  • Like
Reaktionen: ThisIsBeat

ThisIsBeat

Empire
Registriert
02.02.16
Beiträge
85
<div class="bbWrapper"><blockquote data-attributes="member: 218" data-quote="MacApple" data-source="post: 5195973" class="bbCodeBlock bbCodeBlock--expandable bbCodeBlock--quote js-expandWatch"> <div class="bbCodeBlock-title"> <a href="/community/goto/post?id=5195973" class="bbCodeBlock-sourceJump" rel="nofollow" data-xf-click="attribution" data-content-selector="#post-5195973">MacApple schrieb:</a> </div> <div class="bbCodeBlock-content"> <div class="bbCodeBlock-expandContent js-expandContent "> Du berechnest den Frame für den „Border-Layer“ auf Basis des View-Frames. Das würde nur funktionieren, wenn der View in der oberen Linken Ecke liegt, also bei Punkt (x: 0, y:0). Du musst das Koordinatensystem des View verwenden, also die 'bounds'. Außerdem musst du die Breite bei der Positionierung des „Border-Layer“ für die Fälle .Right und .Bottom berücksichtigen.<br /> <br /> Übrigens ist in den case Statements am Ende kein 'break' nötig. Das ist in Swift das Standardverhalten. </div> <div class="bbCodeBlock-expandLink js-expandLink"><a role="button" tabindex="0">Zum Vergrößern anklicken....</a></div> </div> </blockquote><br /> Super, hat funktioniert ! Vielen Dank <img src="/community/styles/apfeltalk/smilies/Smiling Face.png" class="smilie" loading="lazy" alt=":D" title="Big Grin :D" data-shortname=":D" /></div>