2016-12-14 4 views
0

Ich versuche, ein „Kalendertag“ Bild hinzufügen einen Text auf einer klickbaren UI-Taste zu umgeben, wie so:Ändern der Größe ein Hintergrundbildes auf UIButton

let button = UIButton() 
let X_Offset : CGFloat = (95 * CGFloat(buttonCount)) + 10 
let scrollHeight = scrollView.bounds.height 

button.frame = CGRect(x: X_Offset, y: scrollHeight/6, width: 70, height: 60) 
let buttonText = event.startTime.toShortDayOfWeekString() + "\n" + event.startTime.toShortDayOfMonthString() 
button.titleLabel!.lineBreakMode = .byWordWrapping 
button.titleLabel!.textAlignment = .center 
button.setTitle(buttonText, for: .normal) 
button.tag = i 

button.backgroundColor = CompanyColor.Red.color 
let image = UIImage(named: "calendarDay") 
button.setBackgroundImage(image, for: .normal) 
button.titleLabel?.font = UIFont(name: "Roboto", size: 14) 
button.layer.cornerRadius = 8 
button.clipsToBounds = true 

Aber das Bild auf dem Text zu einem Bit vordringenden viel: encroaching image in uibutton Wie kann ich das Hintergrundbild leicht vergrößern und genügend Lücke für den Text lassen?

Antwort

0

Ich denke, was Sie, was Sie suchen, imageEdgeInsets für UIButton setzt. Wenn Sie diese Eigenschaften festlegen, können Sie das Bild neben der Standardposition verschieben. Sie müssen herumspielen, um Ihr gewünschtes Ergebnis zu erhalten.

Es gibt zwei Möglichkeiten, wie Sie dies tun können. Einer verwendet Interface Builder und anderer ist programmgesteuert. Interface Builder ist der einfachste Weg zu gehen, denke ich. Das folgende Bild zeigt, wie Sie diese Eigenschaften für UIButton festlegen können.

Edit these properties to get your desired result

oder versuchen programmatisch wie diese

button.imageEdgeInsets = UIEdgeInsets(top: -10, left: 32, bottom: -10, right: 50) 

Sie verwenden, können Titel wie dieser

button.titleEdgeInsets = UIEdgeInsets(top: 0, left:0, bottom: 0, right: 20) 

Hinweis bewegen:UIEdgeInsets wie diese Einstellung könnte anderes Ergebnis haben, wenn Sie dynamische Größe Schaltfläche z für unterschiedliche Bildschirmgröße. Stellen Sie immer sicher, dass es für alle Bildschirmgrößen wie erwartet aussieht.

+0

Hallo Jay, diese scheinen keine Auswirkungen auf das Hintergrundbild zu haben, nur einen Vordergrund ein. –

+0

Okay! Eine Möglichkeit, das Hintergrundbild zu verschieben, ist die Unterklasse 'UIButton'. Dort müssen Sie' func backgroundRect (forBounds bounds: CGRect) 'überschreiben. Ich bin mir ziemlich sicher, dass dies für das funktionieren würde, wonach Sie suchen. – Jay

Verwandte Themen