Problem mit iPhone 6 Plus Bildschirmbreite

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit iPhone 6 Plus Bildschirmbreite

    Hallo,

    ich habe ein UITableView in dem ich Zeilen anzeige, die durch eine eigene UITableViewCell Klasse definiert werden.
    In diese Klasse mache ich folgendes:

    Quellcode

    1. favoritImageView = [[UIImageView alloc]init];
    2. favoritImageView.frame = CGRectMake(self.frame.size.width-55, 0, 55, 55);
    3. favoritImageView.image = [UIImage imageNamed:@"Ecke.png"];
    4. [self addSubview:favoritImageView];

    Dieser Code fügt die kleine weiße Ecke oben rechts hinzu.
    Allerdings sitzt diese beim iPhone 6 und 6 Plus nicht, wie gewollt am rechten Rand.
    Bildschirmfoto 2014-10-03 um 22.07.28.png
    Kann mir da jemand helfen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jonas.e ()

  • Thallius schrieb:

    Ohne Autolayout must du die Autoresizingmask richtig setzen

    Ich nutze kein Auto Layout.

    Ich habe ganz zu Anfang in der initWithStyle: der UITableViewCell Klasse folgendes stehen:

    Quellcode

    1. self.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;


    Was ist daran falsch?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jonas.e ()

  • Du solltest bei einer Custom TableViewCell alle eigenen Views dem contentView der TableViewCell hinzufügen und nicht direkt der TableViewCell.

    Weiterhin fehlt dem ImageView entweder eine autoresizingMask wie z.B. FlexibleLeftMargin + FlexibleBottomMargin oder zwei passende NSLayoutConstraints (NSLayoutAttributeTop und NSLayoutAttributeTrailing) für das Auto Layout.
  • MCDan schrieb:

    Du solltest bei einer Custom TableViewCell alle eigenen Views dem contentView der TableViewCell hinzufügen und nicht direkt der TableViewCell.


    Habe ich korrigiert. Funktioniert aber leider weiterhin nicht.
    Seltsam ist auch, dass bei NSLog(@"%f", self.contentView.frame.size.height); 44.0 ausgegeben wird,
    obwohl der Cell 140 zugewiesen wurde und ja auch angezeigt wird.
  • MCDan schrieb:

    Dies ist korrekt, da eine TableViewCell mit der Default Größe angelegt wird.

    Ohne die passende autoresizingMask für den ImageView wie z.B. FlexibleLeftMargin + FlexibleBottomMargin oder zwei passende NSLayoutConstraints wirst Du das Problem nicht lösen können.


    Die entsprechende autoresizingMask hatte ich auch schon vergeben.
    Ich habe das Problem jetzt damit gelöst, dass ich favoritImageView = [[UIImageView alloc]init]; in der initWithStyle: und den Rest in -(void)layoutSubviews gemacht habe.
    Kann man das so machen?
  • jonas.e schrieb:

    Die entsprechende autoresizingMask hatte ich auch schon vergeben.
    Ich habe das Problem jetzt damit gelöst, dass ich favoritImageView = [[UIImageView alloc]init]; in der initWithStyle: und den Rest in -(void)layoutSubviews gemacht habe.
    Kann man das so machen?

    Klar könnte man dies so lösen, in layoutSubviews soll ja ggf. das Layout der Subviews angepasst werden.

    Allerdings sollte es auch komplett automatisch über die richtige autoresizingMask funktionieren.

    Wie sieht der komplette Source Code bezügl. des ImageViews denn jetzt aus?
  • MCDan schrieb:

    Wie sieht der komplette Source Code bezügl. des ImageViews denn jetzt aus?


    Eben so, dass ich unter - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{} alle UI Elemente allokiere und initialisiere und unter -(void)layoutSubviews{] dann frame, contenMode, alpha usw. festlege.

    Auf die passende autoresizingMask konnte ich scheinbar ganz verzichten.