Border von UITextField eintfernen, dabei soll der Inhalt an der gleichen Stelle bleiben

  • Border von UITextField eintfernen, dabei soll der Inhalt an der gleichen Stelle bleiben

    Hallo,
    ich habe ein UITextField in einer UITableViewCell.
    Ist der Wert editierbar soll ein RoundedRect Border darum sein, wenn nicht keiner.

    Dazu habe ich eine Funktion geschrieben:

    Quellcode

    1. - (void)setTextField:(UITextField *)aTextField borderHidden:(BOOL)hidden
    2. {
    3. CGRect textFieldRect = aTextField.bounds;
    4. if (hidden)
    5. {
    6. if (aTextField.borderStyle == UITextBorderStyleRoundedRect)
    7. {
    8. textFieldRect.origin.x -= 7.0;
    9. textFieldRect.origin.y -= 0.5;
    10. }
    11. aTextField.borderStyle = UITextBorderStyleNone;
    12. }
    13. else
    14. {
    15. if (aTextField.borderStyle == UITextBorderStyleNone)
    16. {
    17. textFieldRect.origin.x += 7.0;
    18. textFieldRect.origin.y += 0.5;
    19. }
    20. aTextField.borderStyle = UITextBorderStyleRoundedRect;
    21. }
    22. aTextField.bounds = textFieldRect;
    23. }
    Alles anzeigen


    Auf der x-Achse bleibt der String im TextField immer an der gleichen Stelle.
    Nur springt er aber immer nach der Art in die Höhe oder in die Tiefe auf der y-Achse.
    Wenn ich den Wert über 1 setze merke ich, dass die Sprünge größer werden.
    Wenn ich aber dann den Wert unter 1 setze, gibt es immer noch kleine Sprünge, ohne dass ich den perfekten Wert finden kann, bei denen der Inhalt immer an der gleichen Stelle bleibt.

    Geht unter iOS keine size Angaben unter 1.0?
  • Cabaalo schrieb:

    aber kann er nicht einfach den CALayer von Button, dick setzen und einfärben.


    Jop. So hätte ich das jetzt auch gemacht. Er könnte aber auch einfach das textfeld auf textFIeld.editing = false setzten können. Naja ka was er vor hat...

    textFIeld.layer.borderColor = [UIColor grayColor].CGColor;
    textField.layer.borderWidth = 1;
    textField.layer.cornerRadius = 5;
  • yannig7 schrieb:

    Cabaalo schrieb:

    aber kann er nicht einfach den CALayer von Button, dick setzen und einfärben.


    Jop. So hätte ich das jetzt auch gemacht. Er könnte aber auch einfach das textfeld auf textFIeld.editing = false setzten können. Naja ka was er vor hat...

    textFIeld.layer.borderColor = [UIColor grayColor].CGColor;
    textField.layer.borderWidth = 1;
    textField.layer.cornerRadius = 5;

    Probier ich mal aus, Danke!
  • Bayer schrieb:

    Hier noch mal was ich tun möchte:
    Ich möchte den Border vom UITextField hernehmen um den User anzuzeigen ob er den Wert per Hand editieren kann oder nicht.
    Problem ist das ich irgendwie den Border durchsichtig bekommen möchte.

    Ich weise noch mal auf meinen Beitrag oben hin. Durch das überschreiben der zitierten Methoden kannst Du Rahmen und Text genauso positionieren, wie Du es brauchst. Den Rahmen blendest Du über borderStyle ein und aus.
    „Meine Komplikation hatte eine Komplikation.“