2017-10-25 7 views
1

enter image description here私は現在Android用に作ったアプリケーションのiOS版を作成しようとしています。 Androidのバージョンでは、LinearLayoutを使って必要なレイアウトを追加できました(そのうちの1つは、ダイアログを介してその特定のページに追加したデータを表示するためのRecyclerViewでした)。私は今iOSでこれをいくつかの難しさで再現しようとしています。iOS 2つの固定セクションとダイナミックなテーブルビューでレイアウトを行う方法は?

これまでに試したこと: スクロール表示>スタックビュー>スタックビュー内でユーザーが追加したデータを表示するための動的なテーブルビュー - これまでの試みはすべて失敗しました。これはXcodeが地獄私はそれを求めているのではなく、それを求めています。無作為に割り当てられた5桁の高さと幅は珍しくありません。私はコンテンツを表示することができますが、一本化することはスクロールを拒否します。私が見た多くのチュートリアルではスクロールビューのトップ、ボトムをスーパービューに設定していることを確認しました。また、スタックビューにはスクロールビューと同じ幅の制約がありますが、まだ何もありません。

スタティックテーブルビュー>静的セルの1つのダイナミックテーブルビュー - ここでの問題は、ダイナミックテーブルをスクロール可能にしたくないということです。コンテンツがありません私は基本的にこれが存在しないようにしたい、1行が表示されたい場合3行がある場合は、3行すべてを別のスクロールアクションなしで外側のテーブルビューに表示する。

基本的には、UI要素(理想的には静的なテーブルビューまたはこの時点で表示することができる任意の種類のビュー)を使用して、1つの長いスクロール可能な画面の後ろにあります。動的テーブルビューの長さは、追加されたコンテンツに正確に適合します。このようなことは、iOSではまったくできますか?

EDIT:エミュレートしようとしているAndroid側のUIの添付図をご覧ください。 RecyclerViewはサードパーティの詳細ボタンと3つのカメラボタンの間にあります。

+0

あなたのUI画像を置くことはできますか? – fidetro

+0

エミュレートしようとしているAndroid側の画像を追加しました。私はiOS側でスクリーンショットを表示することはできません。Interface Builderは、あなたが表示し、現在コンパイル可能な状態ではないプロジェクトを隠すだけです。 – markeh21

答えて

0

コメントで示唆したように多分あなたは、のUITableViewを使用する必要があります:Objective-Cで

func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return textViewCount + isCamera == true ? 1:0// 
} 


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    if indexPath.row == cameraRow { 
     return cameraCell //suggest addSubview UICollectionView do this 
    }else{ 
     return textViewCell 
    } 
} 

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if indexPath.row == cameraRow { 
     return cameraCount/3 * cameraHeight 
    }else{ 
     return textViewHeight 
    } 
} 

を、私はこれは文字列のサイズを計算使用:

@implementation NSString (FIDExtra) 

- (CGSize)sizeWithTextMaxSize:(CGSize)textMaxSize font:(UIFont *)font 
{ 
    CGSize textSize = CGSizeZero; 

    if (self.length > 0) 
    { 
     NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
     paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 

     NSDictionary *attributesDic = @{NSFontAttributeName: font, 
             NSParagraphStyleAttributeName: paragraphStyle}; 

     CGRect textRect = [self boundingRectWithSize:textMaxSize 
              options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading 
              attributes:attributesDic 
              context:nil]; 

     textSize = CGSizeMake(CGRectGetWidth(textRect), ceilf(CGRectGetHeight(textRect))); 
    } 

    return textSize; 
} 

@end 

私が迅速に使用してみてください便利だとは分かりません。

extension String { 
    func sizeWithTextMaxSize(textMaxSize:CGSize,font:UIFont) -> CGSize { 
     var textSize = CGSize.zero 
     if self.count > 0 { 
      let paragraphStyle = NSMutableParagraphStyle() 
      paragraphStyle.lineBreakMode = .byWordWrapping 
      let attri = NSAttributedString.init(string: self, attributes: [NSAttributedStringKey.font:font]) 
      let textRect = attri.boundingRect(with: textSize, options: [.usesLineFragmentOrigin,.usesFontLeading], context: nil) 
      textSize = CGSize.init(width: textRect.size.width, height: textRect.size.height) 
     } 
     return textSize 
    } 
} 
+0

ありがとうございます。これは便利だと確信していますが、私が探している部分はカメラのボタンの上にあります。私はおそらくこれを行うにはcollectionviewを使用するでしょう、私はすでに他の場所でアプリケーションでそれを使用しています。 – markeh21

+0

'オプションのpublic func tableView(_ tableView:UITableView、heightForHeaderInSectionセクション:Int) - > CGFloat'を使用して文字列のサイズを計算する – fidetro

関連する問題