Compare commits

..

2 Commits

24 changed files with 68 additions and 15 deletions

View File

@ -120,8 +120,8 @@ class PollController: ViewController {
} }
.padding(8) .padding(8)
.background( .background(
backgroundColor RoundedRectangle(cornerRadius: 10, style: .continuous)
.cornerRadius(10) .foregroundColor(backgroundColor)
) )
.onChange(of: controller.duration) { newValue in .onChange(of: controller.duration) { newValue in
poll.duration = newValue.timeInterval poll.duration = newValue.timeInterval

View File

@ -155,6 +155,7 @@ public class DuckableContainerViewController: UIViewController, DuckableViewCont
bottomConstraint.isActive = true bottomConstraint.isActive = true
child.view.layer.cornerRadius = duckedCornerRadius child.view.layer.cornerRadius = duckedCornerRadius
child.view.layer.cornerCurve = .continuous
child.view.layer.maskedCorners = [.layerMinXMaxYCorner, .layerMaxXMaxYCorner] child.view.layer.maskedCorners = [.layerMinXMaxYCorner, .layerMaxXMaxYCorner]
child.view.layer.masksToBounds = true child.view.layer.masksToBounds = true
} }

View File

@ -27,7 +27,7 @@ public struct AvatarImageView: View {
imageView imageView
.resizable() .resizable()
.frame(width: size, height: size) .frame(width: size, height: size)
.cornerRadius(style.cornerRadiusFraction * size) .clipShape(RoundedRectangle(cornerRadius: style.cornerRadiusFraction * size, style: .continuous))
.task { @MainActor in .task { @MainActor in
image = nil image = nil
if let url { if let url {

View File

@ -27,7 +27,9 @@ class FeaturedProfileCollectionViewCell: UICollectionViewCell {
super.awakeFromNib() super.awakeFromNib()
avatarContainerView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadius(for: avatarContainerView) avatarContainerView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadius(for: avatarContainerView)
avatarContainerView.layer.cornerCurve = .continuous
avatarImageView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadius(for: avatarImageView) avatarImageView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadius(for: avatarImageView)
avatarImageView.layer.cornerCurve = .continuous
displayNameLabel.font = UIFontMetrics(forTextStyle: .title1).scaledFont(for: .systemFont(ofSize: 20, weight: .semibold)) displayNameLabel.font = UIFontMetrics(forTextStyle: .title1).scaledFont(for: .systemFont(ofSize: 20, weight: .semibold))
displayNameLabel.adjustsFontForContentSizeCategory = true displayNameLabel.adjustsFontForContentSizeCategory = true
@ -41,6 +43,7 @@ class FeaturedProfileCollectionViewCell: UICollectionViewCell {
backgroundColor = .clear backgroundColor = .clear
clippingView.backgroundColor = .appBackground clippingView.backgroundColor = .appBackground
clippingView.layer.cornerRadius = 5 clippingView.layer.cornerRadius = 5
clippingView.layer.cornerCurve = .continuous
clippingView.layer.borderWidth = 1 clippingView.layer.borderWidth = 1
clippingView.layer.masksToBounds = true clippingView.layer.masksToBounds = true
layer.shadowOpacity = 0.2 layer.shadowOpacity = 0.2

View File

@ -36,14 +36,17 @@ class SuggestedProfileCardCollectionViewCell: UICollectionViewCell {
layer.shadowOffset = .zero layer.shadowOffset = .zero
layer.masksToBounds = false layer.masksToBounds = false
contentView.layer.cornerRadius = 12.5 contentView.layer.cornerRadius = 12.5
contentView.layer.cornerCurve = .continuous
contentView.backgroundColor = .appGroupedCellBackground contentView.backgroundColor = .appGroupedCellBackground
updateLayerColors() updateLayerColors()
headerImageView.cache = .headers headerImageView.cache = .headers
avatarContainerView.layer.masksToBounds = true avatarContainerView.layer.masksToBounds = true
avatarContainerView.layer.cornerCurve = .continuous
avatarImageView.cache = .avatars avatarImageView.cache = .avatars
avatarImageView.layer.masksToBounds = true avatarImageView.layer.masksToBounds = true
avatarImageView.layer.cornerCurve = .continuous
displayNameLabel.font = UIFontMetrics(forTextStyle: .title1).scaledFont(for: .systemFont(ofSize: 24, weight: .semibold)) displayNameLabel.font = UIFontMetrics(forTextStyle: .title1).scaledFont(for: .systemFont(ofSize: 24, weight: .semibold))
displayNameLabel.adjustsFontForContentSizeCategory = true displayNameLabel.adjustsFontForContentSizeCategory = true

View File

@ -57,6 +57,7 @@ class TrendingLinkCardCollectionViewCell: UICollectionViewCell {
layer.shadowOffset = .zero layer.shadowOffset = .zero
layer.masksToBounds = false layer.masksToBounds = false
contentView.layer.cornerRadius = 12.5 contentView.layer.cornerRadius = 12.5
contentView.layer.cornerCurve = .continuous
contentView.backgroundColor = .appGroupedCellBackground contentView.backgroundColor = .appGroupedCellBackground
updateLayerColors() updateLayerColors()

View File

@ -86,7 +86,9 @@ class FastSwitchingAccountView: UIView {
avatarImageView.translatesAutoresizingMaskIntoConstraints = false avatarImageView.translatesAutoresizingMaskIntoConstraints = false
avatarImageView.layer.masksToBounds = true avatarImageView.layer.masksToBounds = true
avatarImageView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadiusFraction * 40 avatarImageView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadiusFraction * 40
avatarImageView.layer.cornerCurve = .continuous
avatarImageView.image = UIImage(systemName: Preferences.shared.avatarStyle == .circle ? "person.crop.circle" : "person.crop.square") avatarImageView.image = UIImage(systemName: Preferences.shared.avatarStyle == .circle ? "person.crop.circle" : "person.crop.square")
// todo: this should really be fit, but somehow the image view ends up being 37pt tall?
avatarImageView.contentMode = .scaleAspectFill avatarImageView.contentMode = .scaleAspectFill
addSubview(avatarImageView) addSubview(avatarImageView)

View File

@ -225,6 +225,7 @@ extension MainSplitViewController: UISplitViewControllerDelegate {
// so that explore items aren't shown multiple times. // so that explore items aren't shown multiple times.
let exploreNav = tabBarViewController.viewController(for: .explore) as! UINavigationController let exploreNav = tabBarViewController.viewController(for: .explore) as! UINavigationController
// make sure there's a root ExploreViewController
let explore: ExploreViewController let explore: ExploreViewController
if let existing = exploreNav.viewControllers.first as? ExploreViewController { if let existing = exploreNav.viewControllers.first as? ExploreViewController {
explore = existing explore = existing
@ -238,14 +239,23 @@ extension MainSplitViewController: UISplitViewControllerDelegate {
explore.loadViewIfNeeded() explore.loadViewIfNeeded()
let search = secondaryNavController.viewControllers.first as! InlineTrendsViewController let search = secondaryNavController.viewControllers.first as! InlineTrendsViewController
// Copy the search query from the search VC to the Explore VC's search controller. if search.searchController.isActive {
let query = search.searchController.searchBar.text ?? "" // Copy the search query from the search VC to the Explore VC's search controller.
explore.searchController.searchBar.text = query let query = search.searchController.searchBar.text ?? ""
// Instruct the explore controller to show its search controller immediately upon its first appearance. explore.searchController.searchBar.text = query
// explore.searchController.isActive can't be set directly, see FB7814561 // Instruct the explore controller to show its search controller immediately upon its first appearance.
explore.searchControllerStatusOnAppearance = !query.isEmpty // explore.searchController.isActive can't be set directly, see FB7814561
// Copy the results from the search VC's results controller to avoid the delay introduced by an extra network request explore.searchControllerStatusOnAppearance = !query.isEmpty
explore.resultsController.loadResults(from: search.resultsController) // Copy the results from the search VC's results controller to avoid the delay introduced by an extra network request
explore.resultsController.loadResults(from: search.resultsController)
} else {
// if there is more than just the InlineTrendsVC, and the search VC is not active,
// then the user selected something from the trends screen
if secondaryNavController.viewControllers.count >= 2 {
// make sure there's a corresponding trends VC in the collapsed nav that they can go back to
exploreNav.pushViewController(TrendsViewController(mastodonController: mastodonController), animated: false)
}
}
// Transfer the navigation stack, dropping the search VC, to keep anything the user has opened // Transfer the navigation stack, dropping the search VC, to keep anything the user has opened
transferNavigationStack(from: .explore, to: exploreNav, dropFirst: true, append: true) transferNavigationStack(from: .explore, to: exploreNav, dropFirst: true, append: true)
@ -329,14 +339,16 @@ extension MainSplitViewController: UISplitViewControllerDelegate {
exploreItem = .favorites exploreItem = .favorites
case let listVC as ListTimelineViewController: case let listVC as ListTimelineViewController:
exploreItem = .list(listVC.list) exploreItem = .list(listVC.list)
case let hashtagVC as HashtagTimelineViewController: case let hashtagVC as HashtagTimelineViewController where hashtagVC.isHashtagSaved:
exploreItem = .savedHashtag(hashtagVC.hashtag) exploreItem = .savedHashtag(hashtagVC.hashtag)
case let instanceVC as InstanceTimelineViewController: case let instanceVC as InstanceTimelineViewController:
exploreItem = .savedInstance(instanceVC.instanceURL) exploreItem = .savedInstance(instanceVC.instanceURL)
case is TrendingStatusesViewController, is TrendingHashtagsViewController, is TrendingLinksViewController: case is TrendsViewController:
exploreItem = .explore exploreItem = .explore
// these three VCs are part of the root SearchViewController, so we don't need to transfer them // skip transferring the ExploreViewController and TrendsViewController
skipFirst = 2 skipFirst = 2
// prepend the InlineTrendsViewController
toPrepend = getOrCreateNavigationStack(item: .explore).first!
default: default:
// transfer the navigation stack prepending, the existing explore VC // transfer the navigation stack prepending, the existing explore VC
// if there was other stuff on the explore stack, it will get discarded // if there was other stuff on the explore stack, it will get discarded

View File

@ -149,6 +149,7 @@ class ActionNotificationGroupCollectionViewCell: UICollectionViewListCell {
imageView.contentMode = .scaleAspectFit imageView.contentMode = .scaleAspectFit
imageView.layer.masksToBounds = true imageView.layer.masksToBounds = true
imageView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadiusFraction * 30 imageView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadiusFraction * 30
imageView.layer.cornerCurve = .continuous
avatarStack.addArrangedSubview(imageView) avatarStack.addArrangedSubview(imageView)
imageView.update(for: avatarURL) imageView.update(for: avatarURL)
} }

View File

@ -123,6 +123,7 @@ class FollowNotificationGroupCollectionViewCell: UICollectionViewListCell {
let imageView = CachedImageView(cache: .avatars) let imageView = CachedImageView(cache: .avatars)
imageView.layer.masksToBounds = true imageView.layer.masksToBounds = true
imageView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadiusFraction * 30 imageView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadiusFraction * 30
imageView.layer.cornerCurve = .continuous
imageView.update(for: avatarURL) imageView.update(for: avatarURL)
avatarStack.addArrangedSubview(imageView) avatarStack.addArrangedSubview(imageView)
} }

View File

@ -21,6 +21,7 @@ class FollowRequestNotificationCollectionViewCell: UICollectionViewListCell {
private let avatarImageView = CachedImageView(cache: .avatars).configure { private let avatarImageView = CachedImageView(cache: .avatars).configure {
$0.layer.masksToBounds = true $0.layer.masksToBounds = true
$0.layer.cornerCurve = .continuous
NSLayoutConstraint.activate([ NSLayoutConstraint.activate([
$0.widthAnchor.constraint(equalTo: $0.heightAnchor), $0.widthAnchor.constraint(equalTo: $0.heightAnchor),
]) ])

View File

@ -15,7 +15,7 @@ class HashtagTimelineViewController: TimelineViewController {
var toggleSaveButton: UIBarButtonItem! var toggleSaveButton: UIBarButtonItem!
private var isHashtagSaved: Bool { var isHashtagSaved: Bool {
let req = SavedHashtag.fetchRequest(name: hashtag.name, account: mastodonController.accountInfo!) let req = SavedHashtag.fetchRequest(name: hashtag.name, account: mastodonController.accountInfo!)
return mastodonController.persistentContainer.viewContext.objectExists(for: req) return mastodonController.persistentContainer.viewContext.objectExists(for: req)
} }

View File

@ -22,6 +22,7 @@ class AccountCollectionViewCell: UICollectionViewListCell {
private let avatarImageView = CachedImageView(cache: .avatars).configure { private let avatarImageView = CachedImageView(cache: .avatars).configure {
$0.layer.masksToBounds = true $0.layer.masksToBounds = true
$0.layer.cornerCurve = .continuous
NSLayoutConstraint.activate([ NSLayoutConstraint.activate([
$0.widthAnchor.constraint(equalToConstant: 50), $0.widthAnchor.constraint(equalToConstant: 50),
$0.heightAnchor.constraint(equalToConstant: 50), $0.heightAnchor.constraint(equalToConstant: 50),

View File

@ -28,6 +28,7 @@ class AccountTableViewCell: UITableViewCell {
super.awakeFromNib() super.awakeFromNib()
avatarImageView.layer.masksToBounds = true avatarImageView.layer.masksToBounds = true
avatarImageView.layer.cornerCurve = .continuous
usernameLabel.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 15, weight: .light)) usernameLabel.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 15, weight: .light))
usernameLabel.adjustsFontForContentSizeCategory = true usernameLabel.adjustsFontForContentSizeCategory = true

View File

@ -22,6 +22,7 @@ class LargeAccountDetailView: UIView {
avatarImageView.translatesAutoresizingMaskIntoConstraints = false avatarImageView.translatesAutoresizingMaskIntoConstraints = false
avatarImageView.layer.masksToBounds = true avatarImageView.layer.masksToBounds = true
avatarImageView.layer.cornerCurve = .continuous
addSubview(avatarImageView) addSubview(avatarImageView)
displayNameLabel.translatesAutoresizingMaskIntoConstraints = false displayNameLabel.translatesAutoresizingMaskIntoConstraints = false

View File

@ -368,11 +368,13 @@ class AttachmentView: GIFImageView {
let first = stack.arrangedSubviews.first! let first = stack.arrangedSubviews.first!
first.layer.masksToBounds = true first.layer.masksToBounds = true
first.layer.cornerRadius = 4 first.layer.cornerRadius = 4
first.layer.cornerCurve = .continuous
if stack.arrangedSubviews.count > 1 { if stack.arrangedSubviews.count > 1 {
first.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner] first.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner]
let last = stack.arrangedSubviews.last! let last = stack.arrangedSubviews.last!
last.layer.masksToBounds = true last.layer.masksToBounds = true
last.layer.cornerRadius = 4 last.layer.cornerRadius = 4
last.layer.cornerCurve = .continuous
last.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMaxXMaxYCorner] last.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMaxXMaxYCorner]
} }

View File

@ -85,6 +85,7 @@ class AttachmentsContainerView: UIView {
case 1: case 1:
let attachmentView = createAttachmentView(index: 0, hSize: .full, vSize: .full) let attachmentView = createAttachmentView(index: 0, hSize: .full, vSize: .full)
attachmentView.layer.cornerRadius = 5 attachmentView.layer.cornerRadius = 5
attachmentView.layer.cornerCurve = .continuous
attachmentView.layer.masksToBounds = true attachmentView.layer.masksToBounds = true
fillView(attachmentView) fillView(attachmentView)
sendSubviewToBack(attachmentView) sendSubviewToBack(attachmentView)
@ -95,10 +96,12 @@ class AttachmentsContainerView: UIView {
case 2: case 2:
let left = createAttachmentView(index: 0, hSize: .half, vSize: .full) let left = createAttachmentView(index: 0, hSize: .half, vSize: .full)
left.layer.cornerRadius = 5 left.layer.cornerRadius = 5
left.layer.cornerCurve = .continuous
left.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner] left.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner]
left.layer.masksToBounds = true left.layer.masksToBounds = true
let right = createAttachmentView(index: 1, hSize: .half, vSize: .full) let right = createAttachmentView(index: 1, hSize: .half, vSize: .full)
right.layer.cornerRadius = 5 right.layer.cornerRadius = 5
right.layer.cornerCurve = .continuous
right.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMaxXMaxYCorner] right.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMaxXMaxYCorner]
right.layer.masksToBounds = true right.layer.masksToBounds = true
let stack = createAttachmentsStack(axis: .horizontal, arrangedSubviews: [ let stack = createAttachmentsStack(axis: .horizontal, arrangedSubviews: [
@ -116,14 +119,17 @@ class AttachmentsContainerView: UIView {
case 3: case 3:
let left = createAttachmentView(index: 0, hSize: .half, vSize: .full) let left = createAttachmentView(index: 0, hSize: .half, vSize: .full)
left.layer.cornerRadius = 5 left.layer.cornerRadius = 5
left.layer.cornerCurve = .continuous
left.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner] left.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner]
left.layer.masksToBounds = true left.layer.masksToBounds = true
let topRight = createAttachmentView(index: 1, hSize: .half, vSize: .half) let topRight = createAttachmentView(index: 1, hSize: .half, vSize: .half)
topRight.layer.cornerRadius = 5 topRight.layer.cornerRadius = 5
topRight.layer.cornerCurve = .continuous
topRight.layer.maskedCorners = .layerMaxXMinYCorner topRight.layer.maskedCorners = .layerMaxXMinYCorner
topRight.layer.masksToBounds = true topRight.layer.masksToBounds = true
let bottomRight = createAttachmentView(index: 2, hSize: .half, vSize: .half) let bottomRight = createAttachmentView(index: 2, hSize: .half, vSize: .half)
bottomRight.layer.cornerRadius = 5 bottomRight.layer.cornerRadius = 5
bottomRight.layer.cornerCurve = .continuous
bottomRight.layer.maskedCorners = .layerMaxXMaxYCorner bottomRight.layer.maskedCorners = .layerMaxXMaxYCorner
bottomRight.layer.masksToBounds = true bottomRight.layer.masksToBounds = true
let innerStack = createAttachmentsStack(axis: .vertical, arrangedSubviews: [ let innerStack = createAttachmentsStack(axis: .vertical, arrangedSubviews: [
@ -148,10 +154,12 @@ class AttachmentsContainerView: UIView {
case 4: case 4:
let topLeft = createAttachmentView(index: 0, hSize: .half, vSize: .half) let topLeft = createAttachmentView(index: 0, hSize: .half, vSize: .half)
topLeft.layer.cornerRadius = 5 topLeft.layer.cornerRadius = 5
topLeft.layer.cornerCurve = .continuous
topLeft.layer.maskedCorners = .layerMinXMinYCorner topLeft.layer.maskedCorners = .layerMinXMinYCorner
topLeft.layer.masksToBounds = true topLeft.layer.masksToBounds = true
let bottomLeft = createAttachmentView(index: 2, hSize: .half, vSize: .half) let bottomLeft = createAttachmentView(index: 2, hSize: .half, vSize: .half)
bottomLeft.layer.cornerRadius = 5 bottomLeft.layer.cornerRadius = 5
bottomLeft.layer.cornerCurve = .continuous
bottomLeft.layer.maskedCorners = .layerMinXMaxYCorner bottomLeft.layer.maskedCorners = .layerMinXMaxYCorner
bottomLeft.layer.masksToBounds = true bottomLeft.layer.masksToBounds = true
let left = createAttachmentsStack(axis: .vertical, arrangedSubviews: [ let left = createAttachmentsStack(axis: .vertical, arrangedSubviews: [
@ -161,10 +169,12 @@ class AttachmentsContainerView: UIView {
attachmentStacks.add(left) attachmentStacks.add(left)
let topRight = createAttachmentView(index: 1, hSize: .half, vSize: .half) let topRight = createAttachmentView(index: 1, hSize: .half, vSize: .half)
topRight.layer.cornerRadius = 5 topRight.layer.cornerRadius = 5
topRight.layer.cornerCurve = .continuous
topRight.layer.maskedCorners = .layerMaxXMinYCorner topRight.layer.maskedCorners = .layerMaxXMinYCorner
topRight.layer.masksToBounds = true topRight.layer.masksToBounds = true
let bottomRight = createAttachmentView(index: 3, hSize: .half, vSize: .half) let bottomRight = createAttachmentView(index: 3, hSize: .half, vSize: .half)
bottomRight.layer.cornerRadius = 5 bottomRight.layer.cornerRadius = 5
bottomRight.layer.cornerCurve = .continuous
bottomRight.layer.maskedCorners = .layerMaxXMaxYCorner bottomRight.layer.maskedCorners = .layerMaxXMaxYCorner
bottomRight.layer.masksToBounds = true bottomRight.layer.masksToBounds = true
let right = createAttachmentsStack(axis: .vertical, arrangedSubviews: [ let right = createAttachmentsStack(axis: .vertical, arrangedSubviews: [
@ -196,6 +206,7 @@ class AttachmentsContainerView: UIView {
moreView.isUserInteractionEnabled = true moreView.isUserInteractionEnabled = true
moreView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(moreViewTapped))) moreView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(moreViewTapped)))
moreView.layer.cornerRadius = 5 moreView.layer.cornerRadius = 5
moreView.layer.cornerCurve = .continuous
moreView.layer.maskedCorners = .layerMaxXMaxYCorner moreView.layer.maskedCorners = .layerMaxXMaxYCorner
moreView.layer.masksToBounds = true moreView.layer.masksToBounds = true
let moreLabel = UILabel() let moreLabel = UILabel()
@ -208,6 +219,7 @@ class AttachmentsContainerView: UIView {
let topLeft = createAttachmentView(index: 0, hSize: .half, vSize: .half) let topLeft = createAttachmentView(index: 0, hSize: .half, vSize: .half)
topLeft.layer.cornerRadius = 5 topLeft.layer.cornerRadius = 5
topLeft.layer.cornerCurve = .continuous
topLeft.layer.maskedCorners = .layerMinXMinYCorner topLeft.layer.maskedCorners = .layerMinXMinYCorner
topLeft.layer.masksToBounds = true topLeft.layer.masksToBounds = true
let bottomLeft = createAttachmentView(index: 2, hSize: .half, vSize: .half) let bottomLeft = createAttachmentView(index: 2, hSize: .half, vSize: .half)
@ -221,6 +233,7 @@ class AttachmentsContainerView: UIView {
attachmentStacks.add(left) attachmentStacks.add(left)
let topRight = createAttachmentView(index: 1, hSize: .half, vSize: .half) let topRight = createAttachmentView(index: 1, hSize: .half, vSize: .half)
topRight.layer.cornerRadius = 5 topRight.layer.cornerRadius = 5
topRight.layer.cornerCurve = .continuous
topRight.layer.maskedCorners = .layerMaxXMinYCorner topRight.layer.maskedCorners = .layerMaxXMinYCorner
topRight.layer.masksToBounds = true topRight.layer.masksToBounds = true
let right = createAttachmentsStack(axis: .vertical, arrangedSubviews: [ let right = createAttachmentsStack(axis: .vertical, arrangedSubviews: [

View File

@ -35,6 +35,7 @@ class PollOptionCheckboxView: UIView {
let size: CGFloat = 20 let size: CGFloat = 20
layer.cornerRadius = (multiple ? 0.1 : 0.5) * size layer.cornerRadius = (multiple ? 0.1 : 0.5) * size
layer.cornerCurve = .continuous
layer.borderWidth = 2 layer.borderWidth = 2
imageView.translatesAutoresizingMaskIntoConstraints = false imageView.translatesAutoresizingMaskIntoConstraints = false

View File

@ -22,6 +22,7 @@ class PollOptionView: UIView {
let minHeight: CGFloat = 35 let minHeight: CGFloat = 35
layer.cornerRadius = 0.1 * minHeight layer.cornerRadius = 0.1 * minHeight
layer.cornerCurve = .continuous
backgroundColor = unselectedBackgroundColor backgroundColor = unselectedBackgroundColor
checkbox.translatesAutoresizingMaskIntoConstraints = false checkbox.translatesAutoresizingMaskIntoConstraints = false
@ -66,6 +67,7 @@ class PollOptionView: UIView {
fillView.backgroundColor = .tintColor.withAlphaComponent(0.6) fillView.backgroundColor = .tintColor.withAlphaComponent(0.6)
fillView.layer.zPosition = -1 fillView.layer.zPosition = -1
fillView.layer.cornerRadius = layer.cornerRadius fillView.layer.cornerRadius = layer.cornerRadius
fillView.layer.cornerCurve = .continuous
addSubview(fillView) addSubview(fillView)
NSLayoutConstraint.activate([ NSLayoutConstraint.activate([

View File

@ -42,6 +42,7 @@ class ProfileHeaderMovedOverlayView: UIView {
avatarImageView = CachedImageView(cache: .avatars) avatarImageView = CachedImageView(cache: .avatars)
avatarImageView.layer.masksToBounds = true avatarImageView.layer.masksToBounds = true
avatarImageView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadiusFraction * 50 avatarImageView.layer.cornerRadius = Preferences.shared.avatarStyle.cornerRadiusFraction * 50
avatarImageView.layer.cornerCurve = .continuous
avatarImageView.addInteraction(UIPointerInteraction(delegate: self)) avatarImageView.addInteraction(UIPointerInteraction(delegate: self))
avatarImageView.isUserInteractionEnabled = true avatarImageView.isUserInteractionEnabled = true

View File

@ -66,7 +66,9 @@ class ProfileHeaderView: UIView {
avatarContainerView.backgroundColor = .appBackground avatarContainerView.backgroundColor = .appBackground
avatarContainerView.layer.masksToBounds = true avatarContainerView.layer.masksToBounds = true
avatarContainerView.layer.cornerCurve = .continuous
avatarImageView.layer.masksToBounds = true avatarImageView.layer.masksToBounds = true
avatarImageView.layer.cornerCurve = .continuous
avatarImageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(avatarPressed))) avatarImageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(avatarPressed)))
avatarImageView.isUserInteractionEnabled = true avatarImageView.isUserInteractionEnabled = true

View File

@ -29,6 +29,7 @@ class ConversationMainStatusCollectionViewCell: UICollectionViewListCell, Status
private static let avatarImageViewSize: CGFloat = 50 private static let avatarImageViewSize: CGFloat = 50
private(set) lazy var avatarImageView = CachedImageView(cache: .avatars).configure { private(set) lazy var avatarImageView = CachedImageView(cache: .avatars).configure {
$0.layer.masksToBounds = true $0.layer.masksToBounds = true
$0.layer.cornerCurve = .continuous
NSLayoutConstraint.activate([ NSLayoutConstraint.activate([
$0.heightAnchor.constraint(equalToConstant: ConversationMainStatusCollectionViewCell.avatarImageViewSize), $0.heightAnchor.constraint(equalToConstant: ConversationMainStatusCollectionViewCell.avatarImageViewSize),
$0.widthAnchor.constraint(equalToConstant: ConversationMainStatusCollectionViewCell.avatarImageViewSize), $0.widthAnchor.constraint(equalToConstant: ConversationMainStatusCollectionViewCell.avatarImageViewSize),

View File

@ -102,6 +102,7 @@ class StatusCardView: UIView {
hStack.spacing = 4 hStack.spacing = 4
hStack.clipsToBounds = true hStack.clipsToBounds = true
hStack.layer.borderWidth = 0.5 hStack.layer.borderWidth = 0.5
hStack.layer.cornerCurve = .continuous
hStack.backgroundColor = inactiveBackgroundColor hStack.backgroundColor = inactiveBackgroundColor
updateBorderColor() updateBorderColor()

View File

@ -33,6 +33,7 @@ class TimelineStatusCollectionViewCell: UICollectionViewListCell, StatusCollecti
$0.image = reblogIcon $0.image = reblogIcon
$0.contentMode = .scaleAspectFit $0.contentMode = .scaleAspectFit
$0.layer.masksToBounds = true $0.layer.masksToBounds = true
$0.layer.cornerCurve = .continuous
$0.tintColor = .secondaryLabel $0.tintColor = .secondaryLabel
NSLayoutConstraint.activate([ NSLayoutConstraint.activate([
// this needs to be lessThanOrEqualTo not just equalTo b/c otherwise intermediate layouts are broken // this needs to be lessThanOrEqualTo not just equalTo b/c otherwise intermediate layouts are broken
@ -75,6 +76,7 @@ class TimelineStatusCollectionViewCell: UICollectionViewListCell, StatusCollecti
private static let avatarImageViewSize: CGFloat = 50 private static let avatarImageViewSize: CGFloat = 50
private(set) lazy var avatarImageView = CachedImageView(cache: .avatars).configure { private(set) lazy var avatarImageView = CachedImageView(cache: .avatars).configure {
$0.layer.masksToBounds = true $0.layer.masksToBounds = true
$0.layer.cornerCurve = .continuous
NSLayoutConstraint.activate([ NSLayoutConstraint.activate([
$0.heightAnchor.constraint(equalToConstant: TimelineStatusCollectionViewCell.avatarImageViewSize), $0.heightAnchor.constraint(equalToConstant: TimelineStatusCollectionViewCell.avatarImageViewSize),
$0.widthAnchor.constraint(equalToConstant: TimelineStatusCollectionViewCell.avatarImageViewSize), $0.widthAnchor.constraint(equalToConstant: TimelineStatusCollectionViewCell.avatarImageViewSize),