1. Objective C / Говнокод #17094

    −396

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    @implementation SlideMenuNavigationBar
    
    - (void)layoutSubviews
    {
        [super layoutSubviews];
    
        for (UIView *aView in self.subviews) {
            
            // Correcting menu toggle button position
            if ([[aView.class description] isEqualToString:@"UIButton"] && aView.frame.origin.x < self.frame.size.width/2) {
                CGRect frame = aView.frame;
                frame.origin.x = 12; // 8 for correlation
                frame.origin.y = -1; // 1 for correlation
                aView.frame = frame;
            }
            
            if (aView.frame.origin.x > self.frame.size.width/2 && !isIPad && ![[aView.class description] isEqualToString:@"ColoredView"]) {
                CGRect frame = aView.frame;
                frame.origin.x = 260; // 8 for correlation
                frame.origin.y = -1;  // 1 for correlation
                aView.frame = frame;
            }
            
            // Correcting back button and right button positions
            if ([[aView.class description] isEqualToString:@"_UINavigationBarBackIndicatorView"]) {
                CGRect frame = aView.frame;
                frame.origin.y = [self.class navigationBarHeight] - kDefaultNavigationBarHeight + 5; // 5 for correlation
                aView.frame = frame;
            }
            if ([[aView.class description] isEqualToString:@"UINavigationButton"]) {
                CGRect frame = aView.frame;
                frame.origin.y = [self.class navigationBarHeight] - kDefaultNavigationBarHeight + 2; // 2 for correlation
                aView.frame = frame;
            }
            
            if ([aView isKindOfClass:[NavigationBarButton class]]) {
                CGRect frame = aView.frame;
                frame.origin.x = 278; // 8 for correlation
                frame.origin.y = 6;   // 1 for correlation
                aView.frame = frame;
            }
        }
    }
    
    @end

    фиг знает что думали :D

    Запостил: l0gg3r, 11 Ноября 2014

    Комментарии (5) RSS

    • жесть :D
      Ответить
    • я как раз изучаю язык - поясните в чём говнокожесть? и можно ли вообще без этоих дров в коде обойтись? я вроде в iOS 8 SDK нашёл UIKit, и всякие автолейауты и примеры universal application - изучаю, и нафига тут патчить navigation window titlebar? Это для старых iPhone 4? iOS SDK 7.1? потому как в новых и используют автолейауты, чтобы пиксели не патчить, а кроме того, тут не искпользуется коэффециент x2, для Retina и iPhone 6, поэтому не будет патчиться корректно, IMHO. Но я полный нуб, чтото из этого говнокода вообще имеет смысл?
      Ответить
      • Мне кажется тут language-agnostic говно: 278 и 6 в коде всегда не к добру.
        Ответить
      • Где говно - да тут везде говно. Одно определение класса по текстовому дескрипшену чего стоит, а магические числа с фреймами, а перебор через self.subviews. Да еще и может быть такой в методе - (void)layoutSubviews не
        умесьтен.
        Ответить

    Добавить комментарий