2016-09-27 2 views
0

프레임 : CGRectMake (0, 0, 320, 330)를 사용하여 프로그래밍 방식으로 뷰를 만들었지 만 장치를 변경하려고 시도했을 때 내용 크기가 그대로 유지되고 bcoz가 적절하게 보이지 않았습니다. 휴대 전화 크기에 따라 UI를 조정하고 싶습니다. 어떻게해야합니까?프로그래밍 방식으로 전화 크기에 따라보기를 조정하는 방법은 무엇입니까?

import UIKit 

extension UIImageView { 
    public func imageFromUrl(urlString: String) { 
     if let url = NSURL(string: urlString) { 
      let request = NSURLRequest(URL: url) 
      NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { 
       (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in 
       if let imageData = data as NSData? { 
        self.image = UIImage(data: imageData) 
       } 
      } 
     } 
    } 
} 

class NewsTableViewCell: UITableViewCell, UITableViewDataSource, UITableViewDelegate { 

    var NewsArray = [AnyObject]() 
    var NewsTableView: UITableView 

    var NewsTableViewController: ViewController? 

    let customView:UIView = UIView() 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     NewsTableView = UITableView(frame: CGRectMake(0, 0, 320, 330), style: UITableViewStyle.Plain) 
     NewsTableView.translatesAutoresizingMaskIntoConstraints = false 

     NewsTableView.contentMode = .ScaleAspectFit 
     NewsTableView.estimatedRowHeight = 100 

     super.init(style: style, reuseIdentifier: reuseIdentifier) 

     setupViews() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    func tableView(newsTableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     print("News :\(NewsArray.count)") 
     if (NewsArray.count > 1) { 
      print("NewsData:\(NewsArray[0]["desc"]!!)") 
     } 
     return NewsArray.count 
    } 

    func tableView(NewsTableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let NewsCell = NewsTableView.dequeueReusableCellWithIdentifier("NewsTableViewCell", forIndexPath: indexPath) as! NewsTableViewCellForSubCat 
     NewsCell.nameLabel.text = NewsArray[indexPath.row]["title"] as! String 
     NewsCell.descLabel.text = NewsArray[indexPath.row]["desc"] as! String 
     NewsCell.imgUser.imageFromUrl("http://104.131.162.14:3033/theme/New/img1.png") 

     print("NewsDataInside:\(NewsArray[indexPath.row]["title"] as! String)") 

     NewsCell.NewsTableViewController = NewsTableViewController 
     return NewsCell 
    } 

    func setupViews() { 
     NewsTableView.dataSource = self 
     NewsTableView.delegate = self 

     NewsTableView.scrollEnabled = false 
     //newsTableView.backgroundColor = UIColor.brownColor() 
     //newsTableView.separatorColor = UIColor.blueColor() 

     NewsTableView.registerClass(NewsTableViewCellForSubCat.self, forCellReuseIdentifier: "NewsTableViewCell") 

     addSubview(NewsTableView) 
    } 

} 
+0

은 모두 잘 작동했다 @Benjamin있는 viewDidLoad에서() –

답변

2

이 시도 :

걸리는

NewsTableView = UITableView(frame: UIScreen.mainScreen().bounds, style: UITableViewStyle.Plain) 

또는

NewsTableView = UITableView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height), style: UITableViewStyle.Plain) 

는 (그들은 같은 일을 수행하지만, 첫 번째는 더 간결) 현재 전화 크기의 프레임을 선택하고 프레임을 설정합니다.

+0

감사 프레임을 설정하려고하지만 일정한 높이를 사용하려는 bcoz 나는 2를 사용하고 있습니다. –

+0

@ChandanAnand 문제 없습니다. 미래의 사용자가 해결책을 빨리 찾을 수 있도록 답변을 수락 된 것으로 표시하는 것을 잊지 마십시오. Landscape의 경우 D –

+0

이 작동하지 않습니다. –

1

나는 신속한 것에 익숙하지 않다. 그래서, 도움이 그냥 constant.h 파일을하거나 당신이 이미 가지고있는 문제

를 해결하는

#define SCREEN_SIZE (UIScreen.mainScreen().bounds().size)

사용 SCREEN_SIZE.height 또는 당신이 밖으로 프로젝트를 통해 원하는 어느 SCREEN_SIZE.width을 정의 할 수 있습니다.

해피 코딩 ..

관련 문제