Swift UI: центрировать текст по кругу - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь поместить рамку в форме круга вокруг текстового представления, но я просто не могу правильно выровнять его и не вижу, в чем проблема. Как вы можете видеть на рисунке ниже, текст иногда смещен влево, в то время как он должен быть центрирован. Любые идеи о том, как это исправить?

enter image description here

struct ContentView: View {
    let result = getDate();
    var body: some View {
        VStack {
            ScrollView(.horizontal, showsIndicators: false) {
                HStack(alignment: .top, spacing: 5) {
                    ForEach(result, id: \.self) {
                        day in
                        Text(day.name!)
                            .frame(width: 35, height: 35, alignment: .center)
                            .padding()
                            .overlay(
                                Circle()
                                    .size(width: 35, height: 35)
                                    .offset(x: 17.5,y: 17.5)
                                    .scale(1.4)
                                    .stroke(Color.orange, lineWidth: 4)
                            )
                    }
                }
            }
        Spacer()
        }.background(Color.white)

    }
}

Круг смещен на половину размера рамки, поэтому его происхождение должно быть в центре. Текст также должен быть центрирован в .frame (ширина: 35, высота: 35, выравнивание: .center).

Большое спасибо за помощь! :)

1 Ответ

0 голосов
/ 21 февраля 2020

.overlay уже имеет размер контейнера с Text и Circle по центру, так что нужно просто работать со вставками круга, не смещая его, как показано ниже

demo

Text(day.name!)
    .frame(width: 35, height: 35, alignment: .center)
    .padding()
    .overlay(
        Circle()
        .stroke(Color.orange, lineWidth: 4)
        .padding(6)
    )
...