Pytanie w sprawie interface-builder, cocoa – NSTableView z przyciskami Plus i Minus

20

Jak mogę zrobić coś takiego?

Nie znalazłem żadnego odpowiedniego obiektu w bibliotece Interface Builder.

jakieś pomysły?

Twoja odpowiedź

4   odpowiedź
3

Jedna odpowiedź tutaj sugeruje użycie przycisków gradientu, jednak tych przycisków nie można wyłączyć, ponieważ powoduje to zmianę tła i tym samym przerywa wygląd. Inny sugerował użycie segmentowej kontroli, która jest prawie idealna, ale segmentowane kontrolki nie obsługują autorezyzowania, np. jeśli szerokość tabeli jest dynamiczna. Moja sugestia to połączenie obu. Użyj kontroli segmentacji dla rzeczywistych przycisków i przycisku gradientu, aby wypełnić resztę szerokości tabeli, która teraz może być również dynamiczna, jeśli szerokość przycisku jest również dynamiczna.

Zobacz moją odpowiedź na podobne pytanie (ze zrzutami ekranu):https://stackoverflow.com/a/22586314/15809

8

Użyj NSButton ze stylem gradientu, a dla obrazów użyj systemu dostarczonego przez NSAddTemplate i NSRemoveTemplate.

Ładnie, ale przy użyciu wielu przycisków gradientu wyłączenie jednego z nich przerywa wygląd. Kontrola segmentacji działa tutaj lepiej, ponieważ wyłączenie pojedynczego segmentu powoduje jedynie przyciemnienie tekstu lub obrazu, ale nie zmienia tła. Mecki
34

Najlepszym sposobem na znalezienie jest użycie NSSegmentedControl.

po przeciągnięciu go na płótno należy skonfigurować jego styl:

Style: Small Square
Mode:  Select Momentary

wygląda lepiej. Teraz ustaw pole „image”NSAddTemplate iNSRemoveTemplate. Upewnij się, że pole etykiety jest puste.

Ok, mamy+„,”-„i jeden pusty segment. Aby zapobiec wybraniu ostatniego przez użytkownika, wybierz goCzłon: wyskocz i wyłączWłączone pole wyboru (znajdujące się obokStan: etykieta).

I wreszcie, co musimy zrobić, to ustawićszerokość pierwszych dwóch segmentów, aby stały się kwadratowe.

Iść doInspektor wielkościWybierzSegment 0Wyłączyć "Naprawiony„pole wyboru (segment powinien natychmiast autorezować, aby dopasować obraz)WybierzSegment 1 i powtórz numer 3Teraz, gdy zmienisz rozmiar kontroli, tylko ostatni segment zmieni szerokośćUmieść go na dole widoku tabeli i zmień jego rozmiar.

Cieszyć się ;)

Podoba mi się to lepiej niż zaakceptowana odpowiedź, ponieważ trzyma wszystko razem i mogę wyłączyć trzeci segment bez zmiany jego wyglądu. Ale jak radzisz sobie z zmianą rozmiaru okna, które rozciąga kontrolę? JeremyP
FYI, nie nazywa się już Mode SelectNone aleMomentary bithavoc
@JeremyP Zobacz drugą część odpowiedzistackoverflow.com/a/22586314/15809 ; możesz miksować sterowanie segmentowe za pomocą przycisku NSBut, aby uzyskać idealny wygląd, zachowanie i autoresize. Mecki
użyłem go w części okna, której nie można zmienić. ale, jak wiem, zmienianie rozmiaru jest naprawdę trudne. jeśli osiągniesz to, daj mi znać, zamieszczając kolejną odpowiedź i zagłosuję na ciebie. ratijas
@bithavoc, nie jestem już z XCode / Cocoa i wszystkim. edytuj odpowiedź. ratijas
8

Aktualizacja dla OSX Yosemite

Próbowałem uzyskać taki sam wygląd jak Mail.app w widoku Konta (prawe okno na moim zrzucie ekranu).

Osiągnąłem pożądany wynik, wykonując poniższe kroki:

DodaćNSSegmentedControlDodaj dwa segmenty i ustaw obraz dla każdego:NSAddTemplate dla+ przyciskNSRemoveTemplate dla- przyciskUstaw rozmiar segmentów nafixed i ustaw wartość na32 pikseliProstokąt obok przycisków to aNSButton z tym stylemGradient.Przycisk jest włączony, aleOdmawia First Responder jest ustawione natrue tak, że nie jest klikalny.

Powiązane pytania