Skip to main content

TableView: Tự động tính lại chiều cao của tableview theo nội dung của nó

Việc co dãn, tính toán chiều cao của table view một cách tự động sẽ thường xuyên gặp trong qúa trình lập trình.

Hôm nay tôi sẽ chỉ cho bạn một phương pháp tuyệt vời để thực hiện điều này:

1 - Cài đặt height constraint từ storyboard .
2 - Kéo height constraint từ storyboard và tạo @IBOutlet cho nó trong file View Controller.

 @IBOutlet weak var tableHeight: NSLayoutConstraint!

3 -Thêm đoạn code sau vào viewWillLayoutSubviews()

override func viewWillLayoutSubviews() {
    super.updateViewConstraints()
    self.tableHeight?.constant = self.table.contentSize.height
}

Nếu row cuối bị cut khi hiển thị, bạn hãy gọi viewWillLayoutSubviews() trong hàm willDisplay:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    self.viewWillLayoutSubviews()
}

That's all !!!
 
 
 
  




Comments

Popular posts from this blog

Swift GCD part 1: Thread safe singletons

Preview Singletons are entities, referenced to the same instance of a class from everywhere in your code. It doesn't matter if you like them or not, you will definitely meet them, so it's better to understand how they work. Constructing and handling a set of data doesn't seem to be a big challenge at first glance. The problems appear when you try to optimise the user experience with background work and your app starts acting weird. ??‍♂️ After decades of watching your display mostly with a blank face, you finally realize that your data isn't handled consistently by the manager because you're accessing it (running tasks on it) from multiple threads at the same time. So you really do have to deal with making your singletons thread safe. This article series is dedicated to thread handling using Swift. In the first part below you will get a comprehensive insight into som...

Different between Map and FlatMap in RX

In short, the map applies a function to each emitted element and returns its result. Observable<Integer> observable = Observable . just (1,2,3) .map(x -> 10 * x); observable.subscribe(System. out ::println); Result: 10 20 30 So FlatMap applies a function to each emitted element, but this function returns the type of the Observable. I.e. 1 emitted by an element through a flatMap to generate a set of emitted elements or not one. Observable<String> observable = Observable . just ( "A" , "B" , "C" ) .flatMap(s -> { System. out .println(); return Observable. just (s + "1" , s + "2" , s + "3" ); }); observable.subscribe(s -> System. out .print(s + " " )); Result: A1 A2 A3 B1 B2 B3 C1 C2 C3

Thread safe singleton’s in Swift

What are singletons? — Singleton is design patterns which says that there should be only one instance of the class for the lifetime of the application. One the best example of Singleton is AppDelegate . How to write a singleton class ? class DefaultDict{ private var dict:[String:Any] = [:] public static let sharedManager = DefaultDict() private init(){ } public func set(value:Any,key:String){ dict[key] = value } public func object(key:String) -> Any?{ dict[key] } public func reset(){ dict.removeAll() } }   Testing singleton class under concurrent circumstances. We are going to write an example where we will set values in dict from various threads and even try to access some with different threads. When we do this we will encounter a crash. If you look closely it will be because of race condition and the crash will be on line set(value:Any,key:String) . class ViewController: UIViewController { ...